!
  function (e) {
    var r = {};
    function t(n) {
      if (r[n]) return r[n].exports;
      var i = r[n] = {
        i: n,
        l: !1,
        exports: {}
      };
      return e[n].call(i.exports, i, i.exports, t),
        i.l = !0,
        i.exports
    }
    t.m = e,
      t.c = r,
      t.i = function (e) {
        return e
      },
      t.d = function (e, r, n) {
        t.o(e, r) || Object.defineProperty(e, r, {
          configurable: !1,
          enumerable: !0,
          get: n
        })
      },
      t.n = function (e) {
        var r = e && e.__esModule ?
          function () {
            return e.
              default
          } :
          function () {
            return e
          };
        return t.d(r, "a", r),
          r
      },
      t.o = function (e, r) {
        return Object.prototype.hasOwnProperty.call(e, r)
      },
      t.p = "",
      t(t.s = 1400)
  }({
    128: function (module, __webpack_exports__, __webpack_require__) {
      "use strict"; (function (__dirname) {
        var Module;
        Module || (Module = eval("(function() { try { return Module || {} } catch(e) { return {} } })()"));
        var moduleOverrides = {};
        for (var key in Module) Module.hasOwnProperty(key) && (moduleOverrides[key] = Module[key]);
        var ENVIRONMENT_IS_NODE = "object" == typeof process && !0,
          ENVIRONMENT_IS_WEB = "object" == typeof window,
          ENVIRONMENT_IS_WORKER = "function" == typeof importScripts,
          ENVIRONMENT_IS_SHELL = !ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_NODE && !ENVIRONMENT_IS_WORKER;
        if (ENVIRONMENT_IS_NODE) {
          Module.print = function (e) {
            process.stdout.write(e + "\n")
          },
            Module.printErr = function (e) {
              process.stderr.write(e + "\n")
            };
          var nodeFS = __webpack_require__(3),
            nodePath = __webpack_require__(2);
          Module.read = function (e, r) {
            e = nodePath.normalize(e);
            var t = nodeFS.readFileSync(e);
            return t || e == nodePath.resolve(e) || (e = path.join(__dirname, "..", "src", e), t = nodeFS.readFileSync(e)),
              t && !r && (t = t.toString()),
              t
          },
            Module.readBinary = function (e) {
              return Module.read(e, !0)
            },
            Module.load = function (e) {
              globalEval(read(e))
            },
            Module.arguments = process.argv.slice(2)
        } else if (ENVIRONMENT_IS_SHELL) Module.print = print,
          "undefined" != typeof printErr && (Module.printErr = printErr),
          "undefined" != typeof read ? Module.read = read : Module.read = function () {
            throw "no read() available (jsc?)"
          },
          Module.readBinary = function (e) {
            return read(e, "binary")
          },
          "undefined" != typeof scriptArgs ? Module.arguments = scriptArgs : void 0 !== arguments && (Module.arguments = arguments),
          this.Module = Module,
          eval("if (typeof gc === 'function' && gc.toString().indexOf('[native code]') > 0) var gc = undefined");
        else {
          if (!ENVIRONMENT_IS_WEB && !ENVIRONMENT_IS_WORKER) throw "Unknown runtime environment. Where are we?";
          if (Module.read = function (e) {
            var r = new XMLHttpRequest;
            return r.open("GET", e, !1),
              r.send(null),
              r.responseText
          },
            void 0 !== arguments && (Module.arguments = arguments), "undefined" != typeof console) Module.print = function (e) {
              console.log(e)
            },
              Module.printErr = function (e) {
                console.log(e)
              };
          else {
            var TRY_USE_DUMP = !1;
            Module.print = TRY_USE_DUMP && "undefined" != typeof dump ?
              function (e) {
                dump(e)
              } : function (e) { }
          }
          ENVIRONMENT_IS_WEB ? this.Module = Module : Module.load = importScripts
        }
        function globalEval(e) {
          eval.call(null, e)
        }
        for (var key in "undefined" == !Module.load && Module.read && (Module.load = function (e) {
          globalEval(Module.read(e))
        }), Module.print || (Module.print = function () { }), Module.printErr || (Module.printErr = Module.print), Module.arguments || (Module.arguments = []), Module.print = Module.print, Module.printErr = Module.printErr, Module.preRun = [], Module.postRun = [], moduleOverrides) moduleOverrides.hasOwnProperty(key) && (Module[key] = moduleOverrides[key]);
        var Runtime = {
          stackSave: function () {
            return STACKTOP
          },
          stackRestore: function (e) {
            STACKTOP = e
          },
          forceAlign: function (e, r) {
            return 1 == (r = r || 4) ? e : isNumber(e) && isNumber(r) ? Math.ceil(e / r) * r : isNumber(r) && isPowerOfTwo(r) ? "(((" + e + ")+" + (r - 1) + ")&" + -r + ")" : "Math.ceil((" + e + ")/" + r + ")*" + r
          },
          isNumberType: function (e) {
            return e in Runtime.INT_TYPES || e in Runtime.FLOAT_TYPES
          },
          isPointerType: function (e) {
            return "*" == e[e.length - 1]
          },
          isStructType: function (e) {
            return !isPointerType(e) && (!!isArrayType(e) || (!! /<?{ ?[^}]* ?}>?/.test(e) || "%" == e[0]))
          },
          INT_TYPES: {
            i1: 0,
            i8: 0,
            i16: 0,
            i32: 0,
            i64: 0
          },
          FLOAT_TYPES: {
            float: 0,
            double: 0
          },
          or64: function (e, r) {
            return (0 | e | r) + 4294967296 * (Math.round(e / 4294967296) | Math.round(r / 4294967296))
          },
          and64: function (e, r) {
            return ((0 | e) & (0 | r)) + 4294967296 * (Math.round(e / 4294967296) & Math.round(r / 4294967296))
          },
          xor64: function (e, r) {
            return ((0 | e) ^ (0 | r)) + 4294967296 * (Math.round(e / 4294967296) ^ Math.round(r / 4294967296))
          },
          getNativeTypeSize: function (e) {
            switch (e) {
              case "i1":
              case "i8":
                return 1;
              case "i16":
                return 2;
              case "i32":
                return 4;
              case "i64":
                return 8;
              case "float":
                return 4;
              case "double":
                return 8;
              default:
                if ("*" === e[e.length - 1]) return Runtime.QUANTUM_SIZE;
                if ("i" === e[0]) {
                  var r = parseInt(e.substr(1));
                  return assert(r % 8 == 0),
                    r / 8
                }
                return 0
            }
          },
          getNativeFieldSize: function (e) {
            return Math.max(Runtime.getNativeTypeSize(e), Runtime.QUANTUM_SIZE)
          },
          dedup: function (e, r) {
            var t = {};
            return r ? e.filter(function (e) {
              return !t[e[r]] && (t[e[r]] = !0, !0)
            }) : e.filter(function (e) {
              return !t[e] && (t[e] = !0, !0)
            })
          },
          set: function () {
            for (var e = "object" == typeof arguments[0] ? arguments[0] : arguments, r = {},
              t = 0; t < e.length; t++) r[e[t]] = 0;
            return r
          },
          STACK_ALIGN: 8,
          getAlignSize: function (e, r, t) {
            return "i64" == e || "double" == e || t ? 8 : e ? Math.min(r || (e ? Runtime.getNativeFieldSize(e) : 0), Runtime.QUANTUM_SIZE) : Math.min(r, 8)
          },
          calculateStructAlignment: function (e) {
            e.flatSize = 0,
              e.alignSize = 0;
            var r = [],
              t = -1;
            return e.flatIndexes = e.fields.map(function (n) {
              var i, o;
              0,
                Runtime.isNumberType(n) || Runtime.isPointerType(n) ? (i = Runtime.getNativeTypeSize(n), o = Runtime.getAlignSize(n, i)) : Runtime.isStructType(n) ? "0" === n[1] ? (i = 0, o = Types.types[n] ? Runtime.getAlignSize(null, Types.types[n].alignSize) : e.alignSize || QUANTUM_SIZE) : (i = Types.types[n].flatSize, o = Runtime.getAlignSize(null, Types.types[n].alignSize)) : "b" == n[0] ? (i = 0 | n.substr(1), o = 1) : "<" === n[0] ? i = o = Types.types[n].flatSize : "i" === n[0] ? assert((i = o = parseInt(n.substr(1)) / 8) % 1 == 0, "cannot handle non-byte-size field " + n) : assert(!1, "invalid type for calculateStructAlignment"),
                e.packed && (o = 1),
                e.alignSize = Math.max(e.alignSize, o);
              var a = Runtime.alignMemory(e.flatSize, o);
              return e.flatSize = a + i,
                t >= 0 && r.push(a - t),
                t = a,
                a
            }),
              "[" === e.name_[0] && (e.flatSize = parseInt(e.name_.substr(1)) * e.flatSize / 2),
              e.flatSize = Runtime.alignMemory(e.flatSize, e.alignSize),
              0 == r.length ? e.flatFactor = e.flatSize : 1 == Runtime.dedup(r).length && (e.flatFactor = r[0]),
              e.needsFlattening = 1 != e.flatFactor,
              e.flatIndexes
          },
          generateStructInfo: function (e, r, t) {
            var n;
            if (r) {
              if (t = t || 0, !(i = ("undefined" == typeof Types ? Runtime.typeInfo : Types.types)[r])) return null;
              if (i.fields.length != e.length) return printErr("Number of named fields must match the type for " + r + ": possibly duplicate struct names. Cannot return structInfo"),
                null;
              n = i.flatIndexes
            } else {
              var i = {
                fields: e.map(function (e) {
                  return e[0]
                }),
                name_: ""
              };
              n = Runtime.calculateStructAlignment(i)
            }
            var o = {
              __size__: i.flatSize
            };
            return r ? e.forEach(function (e, r) {
              if ("string" == typeof e) o[e] = n[r] + t;
              else {
                var a;
                for (var s in e) a = s;
                o[a] = Runtime.generateStructInfo(e[a], i.fields[r], n[r])
              }
            }) : e.forEach(function (e, r) {
              o[e[1]] = n[r]
            }),
              o
          },
          dynCall: function (e, r, t) {
            return t && t.length ? (t.splice || (t = Array.prototype.slice.call(t)), t.splice(0, 0, r), Module["dynCall_" + e].apply(null, t)) : Module["dynCall_" + e].call(null, r)
          },
          functionPointers: [],
          addFunction: function (e) {
            for (var r = 0; r < Runtime.functionPointers.length; r++) if (!Runtime.functionPointers[r]) return Runtime.functionPointers[r] = e,
              2 * (1 + r);
            throw "Finished up all reserved function pointers. Use a higher value for RESERVED_FUNCTION_POINTERS."
          },
          removeFunction: function (e) {
            Runtime.functionPointers[(e - 2) / 2] = null
          },
          getAsmConst: function (code, numArgs) {
            Runtime.asmConstCache || (Runtime.asmConstCache = {});
            var func = Runtime.asmConstCache[code];
            if (func) return func;
            for (var args = [], i = 0; i < numArgs; i++) args.push(String.fromCharCode(36) + i);
            return Runtime.asmConstCache[code] = eval("(function(" + args.join(",") + "){ " + Pointer_stringify(code) + " })")
          },
          warnOnce: function (e) {
            Runtime.warnOnce.shown || (Runtime.warnOnce.shown = {}),
              Runtime.warnOnce.shown[e] || (Runtime.warnOnce.shown[e] = 1, Module.printErr(e))
          },
          funcWrappers: {},
          getFuncWrapper: function (e, r) {
            return assert(r),
              Runtime.funcWrappers[e] || (Runtime.funcWrappers[e] = function () {
                return Runtime.dynCall(r, e, arguments)
              }),
              Runtime.funcWrappers[e]
          },
          UTF8Processor: function () {
            var e = [],
              r = 0;
            this.processCChar = function (t) {
              if (t &= 255, 0 == e.length) return 0 == (128 & t) ? String.fromCharCode(t) : (e.push(t), r = 192 == (224 & t) ? 1 : 224 == (240 & t) ? 2 : 3, "");
              if (r && (e.push(t), --r > 0)) return "";
              var n, i = e[0],
                o = e[1],
                a = e[2],
                s = e[3];
              if (2 == e.length) n = String.fromCharCode((31 & i) << 6 | 63 & o);
              else if (3 == e.length) n = String.fromCharCode((15 & i) << 12 | (63 & o) << 6 | 63 & a);
              else {
                var l = (7 & i) << 18 | (63 & o) << 12 | (63 & a) << 6 | 63 & s;
                n = String.fromCharCode(Math.floor((l - 65536) / 1024) + 55296, (l - 65536) % 1024 + 56320)
              }
              return e.length = 0,
                n
            },
              this.processJSString = function (e) {
                e = unescape(encodeURIComponent(e));
                for (var r = [], t = 0; t < e.length; t++) r.push(e.charCodeAt(t));
                return r
              }
          },
          stackAlloc: function (e) {
            var r = STACKTOP;
            return STACKTOP = (STACKTOP = STACKTOP + e | 0) + 7 & -8,
              r
          },
          staticAlloc: function (e) {
            var r = STATICTOP;
            return STATICTOP = (STATICTOP = STATICTOP + e | 0) + 7 & -8,
              r
          },
          dynamicAlloc: function (e) {
            var r = DYNAMICTOP;
            // return console.log(DYNAMICTOP),
            return undefined,
              (DYNAMICTOP = (DYNAMICTOP = DYNAMICTOP + e | 0) + 7 & -8) >= TOTAL_MEMORY && enlargeMemory(),
              r
          },
          alignMemory: function (e, r) {
            return e = Math.ceil(e / (r || 8)) * (r || 8)
          },
          makeBigInt: function (e, r, t) {
            return t ? +(e >>> 0) + 4294967296 * +(r >>> 0) : +(e >>> 0) + 4294967296 * +(0 | r)
          },
          GLOBAL_BASE: 8,
          QUANTUM_SIZE: 4,
          __dummy__: 0
        },
          __THREW__ = 0,
          ABORT = !1,
          EXITSTATUS = 0,
          undef = 0,
          tempValue,
          tempInt,
          tempBigInt,
          tempInt2,
          tempBigInt2,
          tempPair,
          tempBigIntI,
          tempBigIntR,
          tempBigIntS,
          tempBigIntP,
          tempBigIntD,
          tempDouble,
          tempFloat,
          tempI64,
          tempI64b,
          tempRet0,
          tempRet1,
          tempRet2,
          tempRet3,
          tempRet4,
          tempRet5,
          tempRet6,
          tempRet7,
          tempRet8,
          tempRet9;
        function assert(e, r) {
          e || abort("Assertion failed: " + r)
        }
        var globalScope = this;
        function ccall(e, r, t, n) {
          return ccallFunc(getCFunc(e), r, t, n)
        }
        function getCFunc(ident) {
          try {
            var func = Module["_" + ident];
            func || (func = eval("_" + ident))
          } catch (e) { }
          return assert(func, "Cannot call unknown function " + ident + " (perhaps LLVM optimizations or closure removed it?)"),
            func
        }
        function ccallFunc(e, r, t, n) {
          var i = 0;
          var o = 0,
            a = n ? n.map(function (e) {
              return function (e, r) {
                if ("string" == r) {
                  if (null === e || void 0 === e || 0 === e) return 0;
                  e = intArrayFromString(e),
                    r = "array"
                }
                if ("array" == r) {
                  i || (i = Runtime.stackSave());
                  var t = Runtime.stackAlloc(e.length);
                  return writeArrayToMemory(e, t),
                    t
                }
                return e
              }(e, t[o++])
            }) : [],
            s = function (e, r) {
              return "string" == r ? Pointer_stringify(e) : (assert("array" != r), e)
            }(e.apply(null, a), r);
          return i && Runtime.stackRestore(i),
            s
        }
        function cwrap(e, r, t) {
          var n = getCFunc(e);
          return function () {
            return ccallFunc(n, r, t, Array.prototype.slice.call(arguments))
          }
        }
        function setValue(e, r, t, n) {
          switch ("*" === (t = t || "i8").charAt(t.length - 1) && (t = "i32"), t) {
            case "i1":
            case "i8":
              HEAP8[e] = r;
              break;
            case "i16":
              HEAP16[e >> 1] = r;
              break;
            case "i32":
              HEAP32[e >> 2] = r;
              break;
            case "i64":
              tempI64 = [r >>> 0, (tempDouble = r, +Math_abs(tempDouble) >= 1 ? tempDouble > 0 ? (0 | Math_min(+ Math_floor(tempDouble / 4294967296), 4294967295)) >>> 0 : ~~ + Math_ceil((tempDouble - +(~~tempDouble >>> 0)) / 4294967296) >>> 0 : 0)],
                HEAP32[e >> 2] = tempI64[0],
                HEAP32[e + 4 >> 2] = tempI64[1];
              break;
            case "float":
              HEAPF32[e >> 2] = r;
              break;
            case "double":
              HEAPF64[e >> 3] = r;
              break;
            default:
              abort("invalid type for setValue: " + t)
          }
        }
        function getValue(e, r, t) {
          switch ("*" === (r = r || "i8").charAt(r.length - 1) && (r = "i32"), r) {
            case "i1":
            case "i8":
              return HEAP8[e];
            case "i16":
              return HEAP16[e >> 1];
            case "i32":
            case "i64":
              return HEAP32[e >> 2];
            case "float":
              return HEAPF32[e >> 2];
            case "double":
              return HEAPF64[e >> 3];
            default:
              abort("invalid type for setValue: " + r)
          }
          return null
        }
        Module.ccall = ccall,
          Module.cwrap = cwrap,
          Module.setValue = setValue,
          Module.getValue = getValue;
        var ALLOC_NORMAL = 0,
          ALLOC_STACK = 1,
          ALLOC_STATIC = 2,
          ALLOC_DYNAMIC = 3,
          ALLOC_NONE = 4;
        function allocate(e, r, t, n) {
          var i, o;
          "number" == typeof e ? (i = !0, o = e) : (i = !1, o = e.length);
          var a, s = "string" == typeof r ? r : null;
          if (a = t == ALLOC_NONE ? n : [_malloc, Runtime.stackAlloc, Runtime.staticAlloc, Runtime.dynamicAlloc][void 0 === t ? ALLOC_STATIC : t](Math.max(o, s ? 1 : r.length)), i) {
            var l;
            n = a;
            for (assert(0 == (3 & a)), l = a + (- 4 & o); n < l; n += 4) HEAP32[n >> 2] = 0;
            for (l = a + o; n < l;) HEAP8[0 | n++] = 0;
            return a
          }
          if ("i8" === s) return e.subarray || e.slice ? HEAPU8.set(e, a) : HEAPU8.set(new Uint8Array(e), a),
            a;
          for (var u, c, f, d = 0; d < o;) {
            var _ = e[d];
            "function" == typeof _ && (_ = Runtime.getFunctionIndex(_)),
              0 !== (u = s || r[d]) ? ("i64" == u && (u = "i32"), setValue(a + d, _, u), f !== u && (c = Runtime.getNativeTypeSize(u), f = u), d += c) : d++
          }
          return a
        }
        function Pointer_stringify(e, r) {
          for (var t, n = !1,
            i = 0; ;) {
            if ((t = HEAPU8[e + i | 0]) >= 128) n = !0;
            else if (0 == t && !r) break;
            if (i++, r && i == r) break
          }
          r || (r = i);
          var o = "";
          if (!n) {
            for (var a; r > 0;) a = String.fromCharCode.apply(String, HEAPU8.subarray(e, e + Math.min(r, 1024))),
              o = o ? o + a : a,
              e += 1024,
              r -= 1024;
            return o
          }
          var s = new Runtime.UTF8Processor;
          for (i = 0; i < r; i++) t = HEAPU8[e + i | 0],
            o += s.processCChar(t);
          return o
        }
        function UTF16ToString(e) {
          for (var r = 0,
            t = ""; ;) {
            var n = HEAP16[e + 2 * r >> 1];
            if (0 == n) return t; ++r,
              t += String.fromCharCode(n)
          }
        }
        function stringToUTF16(e, r) {
          for (var t = 0; t < e.length; ++t) {
            var n = e.charCodeAt(t);
            HEAP16[r + 2 * t >> 1] = n
          }
          HEAP16[r + 2 * e.length >> 1] = 0
        }
        function UTF32ToString(e) {
          for (var r = 0,
            t = ""; ;) {
            var n = HEAP32[e + 4 * r >> 2];
            if (0 == n) return t;
            if (++r, n >= 65536) {
              var i = n - 65536;
              t += String.fromCharCode(55296 | i >> 10, 56320 | 1023 & i)
            } else t += String.fromCharCode(n)
          }
        }
        function stringToUTF32(e, r) {
          for (var t = 0,
            n = 0; n < e.length; ++n) {
            var i = e.charCodeAt(n);
            if (i >= 55296 && i <= 57343) i = 65536 + ((1023 & i) << 10) | 1023 & e.charCodeAt(++n);
            HEAP32[r + 4 * t >> 2] = i,
              ++t
          }
          HEAP32[r + 4 * t >> 2] = 0
        }
        function demangle(e) {
          try {
            if ("number" == typeof e && (e = Pointer_stringify(e)), "_" !== e[0]) return e;
            if ("_" !== e[1]) return e;
            if ("Z" !== e[2]) return e;
            switch (e[3]) {
              case "n":
                return "operator new()";
              case "d":
                return "operator delete()"
            }
            var r = 3,
              t = {
                v: "void",
                b: "bool",
                c: "char",
                s: "short",
                i: "int",
                l: "long",
                f: "float",
                d: "double",
                w: "wchar_t",
                a: "signed char",
                h: "unsigned char",
                t: "unsigned short",
                j: "unsigned int",
                m: "unsigned long",
                x: "long long",
                y: "unsigned long long",
                z: "..."
              };
            var n = [];
            var i = !0;
            return function o(a, s, l) {
              s = s || 1 / 0;
              var u, c = "",
                f = [];
              if ("N" === e[r]) {
                if (u = function () {
                  "K" === e[++r] && r++;
                  for (var t = [];
                    "E" !== e[r];) if ("S" !== e[r]) if ("C" !== e[r]) {
                      var i = parseInt(e.substr(r)),
                        o = i.toString().length;
                      if (!i || !o) {
                        r--;
                        break
                      }
                      var a = e.substr(r + o, i);
                      t.push(a),
                        n.push(a),
                        r += o + i
                    } else t.push(t[t.length - 1]),
                      r += 2;
                    else {
                      r++;
                      var s = e.indexOf("_", r),
                        l = e.substring(r, s) || 0;
                      t.push(n[l] || "?"),
                        r = s + 1
                    }
                  return r++,
                    t
                }().join("::"), 0 == --s) return a ? [u] : u
              } else if (("K" === e[r] || i && "L" === e[r]) && r++, p = parseInt(e.substr(r))) {
                var d = p.toString().length;
                u = e.substr(r + d, p),
                  r += d + p
              }
              if (i = !1, "I" === e[r]) {
                r++;
                var _ = o(!0);
                c += o(!0, 1, !0)[0] + " " + u + "<" + _.join(", ") + ">"
              } else c = u;
              e: for (; r < e.length && s-- > 0;) {
                var h = e[r++];
                if (h in t) f.push(t[h]);
                else switch (h) {
                  case "P":
                    f.push(o(!0, 1, !0)[0] + "*");
                    break;
                  case "R":
                    f.push(o(!0, 1, !0)[0] + "&");
                    break;
                  case "L":
                    r++;
                    var p = e.indexOf("E", r) - r;
                    f.push(e.substr(r, p)),
                      r += p + 2;
                    break;
                  case "A":
                    if (p = parseInt(e.substr(r)), r += p.toString().length, "_" !== e[r]) throw "?";
                    r++,
                      f.push(o(!0, 1, !0)[0] + " [" + p + "]");
                    break;
                  case "E":
                    break e;
                  default:
                    c += "?" + h;
                    break e
                }
              }
              return l || 1 !== f.length || "void" !== f[0] || (f = []),
                a ? f : c + "(" + f.join(", ") + ")"
            }()
          } catch (r) {
            return e
          }
        }
        function demangleAll(e) {
          return e.replace(/__Z[\w\d_]+/g,
            function (e) {
              var r = demangle(e);
              return e === r ? e : e + " [" + r + "]"
            })
        }
        function stackTrace() {
          var e = (new Error).stack;
          return e ? demangleAll(e) : "(no stack trace available)"
        }
        Module.ALLOC_NORMAL = ALLOC_NORMAL,
          Module.ALLOC_STACK = ALLOC_STACK,
          Module.ALLOC_STATIC = ALLOC_STATIC,
          Module.ALLOC_DYNAMIC = ALLOC_DYNAMIC,
          Module.ALLOC_NONE = ALLOC_NONE,
          Module.allocate = allocate,
          Module.Pointer_stringify = Pointer_stringify,
          Module.UTF16ToString = UTF16ToString,
          Module.stringToUTF16 = stringToUTF16,
          Module.UTF32ToString = UTF32ToString,
          Module.stringToUTF32 = stringToUTF32;
        var PAGE_SIZE = 4096,
          HEAP, HEAP8, HEAPU8, HEAP16, HEAPU16, HEAP32, HEAPU32, HEAPF32, HEAPF64;
        function alignMemoryPage(e) {
          return e + 4095 & -4096
        }
        var STATIC_BASE = 0,
          STATICTOP = 0,
          staticSealed = !1,
          STACK_BASE = 0,
          STACKTOP = 0,
          STACK_MAX = 0,
          DYNAMIC_BASE = 0,
          DYNAMICTOP = 0;
        function enlargeMemory() {
          abort("Cannot enlarge memory arrays in asm.js. Either (1) compile with -s TOTAL_MEMORY=X with X higher than the current value " + TOTAL_MEMORY + ", or (2) set Module.TOTAL_MEMORY before the program runs.")
        }
        var TOTAL_STACK = Module.TOTAL_STACK || 5242880,
          TOTAL_MEMORY = Module.TOTAL_MEMORY || 16777216,
          FAST_MEMORY = Module.FAST_MEMORY || 2097152;
        assert("undefined" != typeof Int32Array && "undefined" != typeof Float64Array && !!new Int32Array(1).subarray && !!new Int32Array(1).set, "Cannot fallback to non-typed array case: Code is too specialized");
        var buffer = new ArrayBuffer(TOTAL_MEMORY);
        function callRuntimeCallbacks(e) {
          for (; e.length > 0;) {
            var r = e.shift();
            if ("function" != typeof r) {
              var t = r.func;
              "number" == typeof t ? void 0 === r.arg ? Runtime.dynCall("v", t) : Runtime.dynCall("vi", t, [r.arg]) : t(void 0 === r.arg ? null : r.arg)
            } else r()
          }
        }
        HEAP8 = new Int8Array(buffer),
          HEAP16 = new Int16Array(buffer),
          HEAP32 = new Int32Array(buffer),
          HEAPU8 = new Uint8Array(buffer),
          HEAPU16 = new Uint16Array(buffer),
          HEAPU32 = new Uint32Array(buffer),
          HEAPF32 = new Float32Array(buffer),
          HEAPF64 = new Float64Array(buffer),
          HEAP32[0] = 255,
          assert(255 === HEAPU8[0] && 0 === HEAPU8[3], "Typed arrays 2 must be run on a little-endian system"),
          Module.HEAP = HEAP,
          Module.HEAP8 = HEAP8,
          Module.HEAP16 = HEAP16,
          Module.HEAP32 = HEAP32,
          Module.HEAPU8 = HEAPU8,
          Module.HEAPU16 = HEAPU16,
          Module.HEAPU32 = HEAPU32,
          Module.HEAPF32 = HEAPF32,
          Module.HEAPF64 = HEAPF64;
        var __ATPRERUN__ = [],
          __ATINIT__ = [],
          __ATMAIN__ = [],
          __ATEXIT__ = [],
          __ATPOSTRUN__ = [],
          runtimeInitialized = !1;
        function preRun() {
          if (Module.preRun) for ("function" == typeof Module.preRun && (Module.preRun = [Module.preRun]); Module.preRun.length;) addOnPreRun(Module.preRun.shift());
          callRuntimeCallbacks(__ATPRERUN__)
        }
        function ensureInitRuntime() {
          runtimeInitialized || (runtimeInitialized = !0, callRuntimeCallbacks(__ATINIT__))
        }
        function preMain() {
          callRuntimeCallbacks(__ATMAIN__)
        }
        function exitRuntime() {
          callRuntimeCallbacks(__ATEXIT__)
        }
        function postRun() {
          if (Module.postRun) for ("function" == typeof Module.postRun && (Module.postRun = [Module.postRun]); Module.postRun.length;) addOnPostRun(Module.postRun.shift());
          callRuntimeCallbacks(__ATPOSTRUN__)
        }
        function addOnPreRun(e) {
          __ATPRERUN__.unshift(e)
        }
        function addOnInit(e) {
          __ATINIT__.unshift(e)
        }
        function addOnPreMain(e) {
          __ATMAIN__.unshift(e)
        }
        function addOnExit(e) {
          __ATEXIT__.unshift(e)
        }
        function addOnPostRun(e) {
          __ATPOSTRUN__.unshift(e)
        }
        function intArrayFromString(e, r, t) {
          var n = (new Runtime.UTF8Processor).processJSString(e);
          return t && (n.length = t),
            r || n.push(0),
            n
        }
        function intArrayToString(e) {
          for (var r = [], t = 0; t < e.length; t++) {
            var n = e[t];
            n > 255 && (n &= 255),
              r.push(String.fromCharCode(n))
          }
          return r.join("")
        }
        function writeStringToMemory(e, r, t) {
          for (var n = intArrayFromString(e, t), i = 0; i < n.length;) {
            var o = n[i];
            HEAP8[r + i | 0] = o,
              i += 1
          }
        }
        function writeArrayToMemory(e, r) {
          for (var t = 0; t < e.length; t++) HEAP8[r + t | 0] = e[t]
        }
        function writeAsciiToMemory(e, r, t) {
          for (var n = 0; n < e.length; n++) HEAP8[r + n | 0] = e.charCodeAt(n);
          t || (HEAP8[r + e.length | 0] = 0)
        }
        function unSign(e, r, t, n) {
          return e >= 0 ? e : r <= 32 ? 2 * Math.abs(1 << r - 1) + e : Math.pow(2, r) + e
        }
        function reSign(e, r, t, n) {
          if (e <= 0) return e;
          var i = r <= 32 ? Math.abs(1 << r - 1) : Math.pow(2, r - 1);
          return e >= i && (r <= 32 || e > i) && (e = -2 * i + e),
            e
        }
        Module.addOnPreRun = Module.addOnPreRun = addOnPreRun,
          Module.addOnInit = Module.addOnInit = addOnInit,
          Module.addOnPreMain = Module.addOnPreMain = addOnPreMain,
          Module.addOnExit = Module.addOnExit = addOnExit,
          Module.addOnPostRun = Module.addOnPostRun = addOnPostRun,
          Module.intArrayFromString = intArrayFromString,
          Module.intArrayToString = intArrayToString,
          Module.writeStringToMemory = writeStringToMemory,
          Module.writeArrayToMemory = writeArrayToMemory,
          Module.writeAsciiToMemory = writeAsciiToMemory,
          Math.imul || (Math.imul = function (e, r) {
            var t = 65535 & e,
              n = 65535 & r;
            return t * n + ((e >>> 16) * n + t * (r >>> 16) << 16) | 0
          }),
          Math.imul = Math.imul;
        var Math_abs = Math.abs,
          Math_cos = Math.cos,
          Math_sin = Math.sin,
          Math_tan = Math.tan,
          Math_acos = Math.acos,
          Math_asin = Math.asin,
          Math_atan = Math.atan,
          Math_atan2 = Math.atan2,
          Math_exp = Math.exp,
          Math_log = Math.log,
          Math_sqrt = Math.sqrt,
          Math_ceil = Math.ceil,
          Math_floor = Math.floor,
          Math_pow = Math.pow,
          Math_imul = Math.imul,
          Math_fround = Math.fround,
          Math_min = Math.min,
          runDependencies = 0,
          runDependencyWatcher = null,
          dependenciesFulfilled = null;
        function addRunDependency(e) {
          runDependencies++,
            Module.monitorRunDependencies && Module.monitorRunDependencies(runDependencies)
        }
        function removeRunDependency(e) {
          if (runDependencies--, Module.monitorRunDependencies && Module.monitorRunDependencies(runDependencies), 0 == runDependencies && (null !== runDependencyWatcher && (clearInterval(runDependencyWatcher), runDependencyWatcher = null), dependenciesFulfilled)) {
            var r = dependenciesFulfilled;
            dependenciesFulfilled = null,
              r()
          }
        }
        Module.addRunDependency = addRunDependency,
          Module.removeRunDependency = removeRunDependency,
          Module.preloadedImages = {},
          Module.preloadedAudios = {};
        var memoryInitializer = null,
          _stderr;
        STATIC_BASE = 8,
          STATICTOP = STATIC_BASE + 14688,
          __ATINIT__.push({
            func: function () {
              runPostSets()
            }
          });
        var _stderr = _stderr = allocate([0, 0, 0, 0, 0, 0, 0, 0], "i8", ALLOC_STATIC);
        allocate([0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 120, 4, 0, 0, 0, 0, 128, 191, 96, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 120, 4, 0, 0, 0, 0, 128, 191, 192, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 96, 4, 0, 0, 0, 0, 128, 191, 112, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 191, 36, 0, 0, 0, 0, 0, 0, 0, 36, 0, 0, 0, 112, 0, 0, 0, 192, 0, 0, 0, 96, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 154, 153, 121, 64, 0, 0, 32, 64, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 64, 0, 0, 32, 64, 0, 0, 0, 64, 154, 153, 153, 63, 0, 0, 0, 63, 0, 0, 0, 0, 0, 0, 0, 191, 51, 51, 51, 191, 205, 204, 76, 191, 102, 102, 102, 191, 0, 0, 128, 191, 0, 0, 32, 65, 0, 0, 208, 64, 102, 102, 166, 64, 0, 0, 144, 64, 154, 153, 121, 64, 0, 0, 96, 64, 0, 0, 64, 64, 0, 0, 32, 64, 51, 51, 19, 64, 102, 102, 230, 63, 0, 0, 128, 63, 0, 0, 48, 65, 205, 204, 12, 65, 0, 0, 240, 64, 0, 0, 208, 64, 0, 0, 160, 64, 154, 153, 121, 64, 154, 153, 121, 64, 154, 153, 121, 64, 0, 0, 96, 64, 0, 0, 64, 64, 0, 0, 128, 63, 0, 0, 48, 65, 0, 0, 48, 65, 102, 102, 30, 65, 0, 0, 8, 65, 0, 0, 224, 64, 0, 0, 192, 64, 0, 0, 144, 64, 0, 0, 128, 64, 0, 0, 128, 64, 0, 0, 128, 64, 0, 0, 0, 64, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 24, 65, 0, 0, 8, 65, 0, 0, 0, 65, 0, 0, 224, 64, 0, 0, 192, 64, 0, 0, 160, 64, 0, 0, 64, 64, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 24, 65, 0, 0, 8, 65, 0, 0, 224, 64, 0, 0, 192, 64, 0, 0, 160, 64, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 205, 204, 28, 65, 0, 0, 24, 65, 0, 0, 240, 64, 0, 0, 224, 64, 0, 0, 144, 64, 205, 204, 108, 64, 0, 0, 64, 64, 0, 0, 32, 64, 0, 0, 0, 64, 102, 102, 230, 63, 0, 0, 192, 63, 0, 0, 128, 63, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 128, 191, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 24, 65, 0, 0, 8, 65, 0, 0, 240, 64, 0, 0, 192, 64, 0, 0, 160, 64, 154, 153, 121, 64, 0, 0, 64, 64, 0, 0, 0, 64, 0, 0, 128, 63, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 24, 65, 51, 51, 11, 65, 154, 153, 249, 64, 0, 0, 224, 64, 0, 0, 208, 64, 0, 0, 128, 64, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 0, 0, 48, 65, 205, 204, 28, 65, 0, 0, 240, 64, 0, 0, 176, 64, 0, 0, 0, 0, 5, 0, 0, 0, 8, 0, 0, 0, 96, 32, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 32, 41, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 20, 0, 0, 0, 2, 0, 0, 0, 96, 37, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 32, 27, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 224, 39, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 8, 0, 0, 0, 32, 31, 0, 0, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 10, 0, 0, 0, 4, 0, 0, 0, 80, 21, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 8, 0, 0, 0, 5, 0, 0, 0, 80, 17, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 160, 5, 0, 0, 16, 0, 0, 0, 248, 54, 0, 0, 1, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 20, 0, 0, 0, 18, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 72, 6, 0, 0, 16, 0, 0, 0, 72, 53, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 6, 0, 0, 0, 20, 0, 0, 0, 18, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 176, 8, 0, 0, 2, 0, 0, 0, 152, 49, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 8, 0, 0, 0, 8, 0, 0, 0, 12, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 10, 0, 0, 0, 14, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 144, 4, 0, 0, 200, 4, 0, 0, 0, 0, 0, 0, 34, 55, 67, 188, 212, 125, 64, 61, 171, 7, 28, 190, 47, 54, 29, 63, 47, 54, 29, 63, 171, 7, 28, 190, 212, 125, 64, 61, 132, 15, 5, 189, 155, 20, 176, 61, 167, 51, 81, 190, 167, 202, 118, 63, 64, 166, 85, 62, 81, 113, 247, 188, 34, 142, 208, 187, 34, 142, 208, 187, 81, 113, 247, 188, 64, 166, 85, 62, 167, 202, 118, 63, 167, 51, 81, 190, 155, 20, 176, 61, 132, 15, 5, 189, 0, 0, 0, 0, 0, 5, 0, 0, 160, 0, 0, 0, 40, 0, 0, 0, 8, 0, 0, 0, 102, 102, 102, 63, 154, 153, 25, 63, 23, 183, 81, 57, 102, 102, 102, 63, 0, 0, 0, 0, 176, 0, 0, 0, 120, 0, 0, 0, 64, 0, 0, 0, 8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 240, 2, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 144, 4, 0, 0, 64, 1, 0, 0, 80, 0, 0, 0, 8, 0, 0, 0, 102, 102, 102, 63, 154, 153, 25, 63, 23, 183, 81, 57, 51, 51, 51, 63, 0, 0, 0, 0, 176, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 8, 0, 0, 0, 9, 0, 0, 0, 10, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 8, 1, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 4, 0, 0, 0, 0, 0, 63, 79, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 3, 0, 0, 0, 1, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 80, 9, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 72, 4, 0, 0, 205, 204, 204, 61, 236, 1, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 80, 9, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 208, 3, 0, 0, 205, 204, 76, 62, 108, 1, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 80, 9, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 72, 4, 0, 0, 154, 153, 153, 62, 44, 1, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 96, 9, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 24, 4, 0, 0, 102, 102, 230, 62, 220, 0, 0, 0, 255, 255, 255, 255, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 112, 9, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 48, 4, 0, 0, 205, 204, 12, 63, 160, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 64, 9, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 232, 3, 0, 0, 154, 153, 25, 63, 119, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 0, 0, 0, 6, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 0, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 0, 0, 128, 191, 43, 0, 0, 0, 160, 0, 0, 0, 40, 0, 0, 0, 10, 0, 0, 0, 17, 0, 0, 0, 144, 0, 0, 0, 102, 102, 102, 63, 154, 153, 25, 63, 23, 183, 81, 57, 0, 0, 0, 0, 120, 8, 0, 0, 64, 8, 0, 0, 8, 8, 0, 0, 208, 7, 0, 0, 152, 7, 0, 0, 96, 7, 0, 0, 40, 7, 0, 0, 240, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 5, 0, 0, 0, 1, 0, 0, 0, 8, 0, 0, 0, 2, 0, 0, 0, 3, 0, 0, 0, 3, 0, 0, 0, 4, 0, 0, 0, 4, 0, 0, 0, 5, 0, 0, 0, 5, 0, 0, 0, 6, 0, 0, 0, 7, 0, 0, 0, 208, 25, 0, 0, 5, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 208, 23, 0, 0, 7, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 208, 25, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 208, 25, 0, 0, 5, 0, 0, 0, 7, 0, 0, 0, 0, 0, 0, 0, 10, 215, 163, 61, 225, 41, 164, 61, 87, 33, 165, 61, 123, 190, 166, 61, 63, 0, 169, 61, 29, 230, 171, 61, 21, 112, 175, 61, 161, 157, 179, 61, 47, 109, 184, 61, 190, 222, 189, 61, 187, 240, 195, 61, 161, 162, 202, 61, 220, 242, 209, 61, 97, 224, 217, 61, 156, 105, 226, 61, 252, 140, 235, 61, 115, 73, 245, 61, 233, 156, 255, 61, 162, 66, 5, 62, 122, 0, 11, 62, 238, 6, 17, 62, 55, 85, 23, 62, 192, 233, 29, 62, 126, 195, 36, 62, 101, 225, 43, 62, 36, 66, 51, 62, 176, 228, 58, 62, 50, 199, 66, 62, 159, 232, 74, 62, 166, 71, 83, 62, 113, 226, 91, 62, 179, 183, 100, 62, 214, 197, 109, 62, 74, 11, 119, 62, 61, 67, 128, 62, 202, 26, 133, 62, 128, 11, 138, 62, 119, 20, 143, 62, 227, 52, 148, 62, 219, 107, 153, 62, 82, 184, 158, 62, 126, 25, 164, 62, 84, 142, 169, 62, 9, 22, 175, 62, 113, 175, 180, 62, 192, 89, 186, 62, 203, 19, 192, 62, 165, 220, 197, 62, 66, 179, 203, 62, 183, 150, 209, 62, 215, 133, 215, 62, 183, 127, 221, 62, 73, 131, 227, 62, 96, 143, 233, 62, 240, 162, 239, 62, 14, 189, 245, 62, 140, 220, 251, 62, 46, 0, 1, 63, 169, 19, 4, 63, 82, 40, 7, 63, 113, 61, 10, 63, 143, 82, 13, 63, 56, 103, 16, 63, 179, 122, 19, 63, 156, 140, 22, 63, 90, 156, 25, 63, 105, 169, 28, 63, 49, 179, 31, 63, 61, 185, 34, 63, 6, 187, 37, 63, 246, 183, 40, 63, 134, 175, 43, 63, 64, 161, 46, 63, 143, 140, 49, 63, 252, 112, 52, 63, 1, 78, 55, 63, 41, 35, 58, 63, 221, 239, 60, 63, 183, 179, 63, 63, 34, 110, 66, 63, 184, 30, 69, 63, 244, 196, 71, 63, 112, 96, 74, 63, 166, 240, 76, 63, 33, 117, 79, 63, 124, 237, 81, 63, 67, 89, 84, 63, 15, 184, 86, 63, 108, 9, 89, 63, 245, 76, 91, 63, 69, 130, 93, 63, 248, 168, 95, 63, 186, 192, 97, 63, 21, 201, 99, 63, 181, 193, 101, 63, 88, 170, 103, 63, 136, 130, 105, 63, 2, 74, 107, 63, 113, 0, 109, 63, 148, 165, 110, 63, 38, 57, 112, 63, 195, 186, 113, 63, 57, 42, 115, 63, 68, 135, 116, 63, 179, 209, 117, 63, 66, 9, 119, 63, 174, 45, 120, 63, 213, 62, 121, 63, 134, 60, 122, 63, 141, 38, 123, 63, 202, 252, 123, 63, 10, 191, 124, 63, 59, 109, 125, 63, 45, 7, 126, 63, 223, 140, 126, 63, 30, 254, 126, 63, 217, 90, 127, 63, 18, 163, 127, 63, 182, 214, 127, 63, 165, 245, 127, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 0, 0, 128, 63, 223, 166, 127, 63, 225, 155, 126, 63, 156, 223, 124, 63, 113, 115, 122, 63, 20, 89, 119, 63, 192, 146, 115, 63, 54, 35, 111, 63, 153, 13, 106, 63, 151, 85, 100, 63, 113, 255, 93, 63, 191, 15, 87, 63, 139, 139, 79, 63, 121, 120, 71, 63, 110, 220, 62, 63, 249, 189, 53, 63, 251, 35, 44, 63, 253, 21, 34, 63, 237, 155, 23, 63, 115, 190, 12, 63, 219, 134, 1, 63, 71, 255, 235, 62, 236, 104, 212, 62, 77, 102, 188, 62, 5, 26, 164, 62, 11, 180, 139, 62, 143, 251, 102, 62, 123, 247, 55, 62, 80, 140, 12, 62, 100, 4, 212, 61, 0, 0, 128, 63, 225, 69, 127, 63, 202, 26, 125, 63, 144, 136, 121, 63, 69, 158, 116, 63, 59, 112, 110, 63, 80, 25, 103, 63, 2, 183, 94, 63, 102, 107, 85, 63, 222, 89, 75, 63, 21, 169, 64, 63, 0, 0, 0, 0, 206, 223, 116, 63, 34, 224, 244, 191, 206, 223, 116, 63, 218, 230, 118, 63, 151, 226, 246, 191, 218, 230, 118, 63, 99, 156, 119, 63, 15, 156, 247, 191, 99, 156, 119, 63, 253, 135, 124, 63, 186, 131, 252, 191, 253, 135, 124, 63, 174, 71, 97, 63, 174, 71, 225, 191, 174, 71, 97, 63, 0, 0, 0, 0, 0, 0, 128, 63, 52, 162, 244, 191, 33, 60, 106, 63, 0, 0, 128, 63, 94, 162, 246, 191, 3, 67, 110, 63, 0, 0, 128, 63, 255, 120, 247, 191, 229, 126, 111, 63, 0, 0, 128, 63, 4, 115, 252, 191, 128, 43, 121, 63, 0, 0, 128, 63, 41, 92, 175, 191, 186, 73, 204, 62, 0, 0, 0, 0, 220, 194, 6, 247, 246, 242, 200, 23, 1, 230, 23, 208, 239, 12, 8, 249, 23, 29, 220, 228, 250, 227, 239, 251, 40, 23, 10, 10, 210, 243, 36, 6, 4, 226, 227, 62, 32, 224, 255, 22, 242, 1, 252, 234, 211, 2, 54, 4, 226, 199, 197, 244, 27, 253, 225, 8, 247, 5, 10, 242, 32, 66, 19, 9, 2, 231, 219, 23, 241, 18, 218, 225, 5, 247, 235, 15, 0, 22, 62, 30, 15, 244, 242, 210, 77, 21, 33, 3, 34, 29, 237, 50, 2, 11, 9, 218, 244, 219, 62, 1, 241, 54, 32, 6, 2, 232, 20, 35, 235, 2, 19, 24, 243, 55, 4, 9, 39, 237, 30, 255, 235, 73, 54, 33, 8, 18, 3, 15, 6, 237, 209, 6, 253, 208, 206, 1, 26, 20, 8, 233, 206, 65, 242, 201, 239, 225, 219, 228, 53, 255, 239, 203, 1, 57, 11, 248, 231, 226, 219, 64, 5, 204, 211, 15, 23, 31, 15, 14, 231, 24, 33, 254, 212, 200, 238, 6, 235, 213, 4, 244, 17, 219, 20, 246, 34, 15, 2, 15, 55, 21, 245, 225, 250, 46, 25, 16, 247, 231, 248, 194, 28, 17, 20, 224, 227, 26, 30, 25, 237, 2, 240, 239, 26, 205, 2, 50, 42, 19, 190, 23, 29, 254, 3, 19, 237, 219, 32, 15, 6, 30, 222, 13, 11, 251, 40, 31, 10, 214, 4, 247, 26, 247, 186, 17, 254, 233, 20, 234, 201, 51, 232, 225, 22, 234, 15, 243, 3, 246, 228, 240, 56, 4, 193, 11, 238, 241, 238, 218, 221, 16, 249, 34, 255, 235, 207, 209, 9, 219, 7, 8, 69, 55, 20, 6, 223, 211, 246, 247, 6, 247, 12, 71, 15, 253, 214, 249, 232, 32, 221, 254, 214, 239, 251, 0, 254, 223, 202, 13, 244, 222, 47, 23, 19, 55, 7, 248, 74, 31, 14, 16, 233, 230, 19, 12, 238, 207, 228, 225, 236, 2, 242, 236, 209, 78, 40, 13, 233, 245, 21, 250, 18, 1, 47, 5, 38, 35, 32, 46, 22, 8, 13, 16, 242, 18, 51, 19, 40, 39, 11, 230, 255, 239, 47, 2, 203, 241, 31, 234, 38, 21, 241, 240, 5, 223, 53, 15, 218, 86, 11, 253, 232, 49, 13, 252, 245, 238, 28, 20, 244, 229, 230, 35, 231, 221, 253, 236, 195, 30, 10, 201, 244, 234, 204, 202, 242, 19, 224, 244, 45, 15, 248, 208, 247, 11, 224, 8, 240, 222, 243, 51, 18, 38, 254, 224, 239, 22, 254, 238, 228, 186, 59, 27, 228, 237, 246, 236, 247, 247, 248, 235, 21, 248, 35, 254, 45, 253, 247, 12, 0, 30, 7, 217, 43, 27, 218, 165, 30, 26, 19, 201, 252, 63, 14, 239, 13, 9, 13, 2, 7, 4, 6, 61, 72, 255, 239, 29, 255, 234, 239, 8, 228, 219, 63, 44, 41, 3, 2, 14, 9, 250, 75, 248, 249, 244, 241, 244, 13, 9, 252, 30, 234, 191, 15, 0, 211, 4, 252, 1, 5, 22, 11, 23, 39, 12, 242, 236, 227, 195, 189, 180, 224, 185, 189, 68, 77, 46, 34, 5, 243, 208, 210, 184, 175, 172, 196, 198, 216, 228, 82, 93, 68, 45, 29, 3, 237, 209, 228, 213, 221, 226, 248, 243, 217, 165, 165, 133, 160, 10, 10, 250, 238, 201, 196, 165, 200, 220, 229, 240, 208, 181, 40, 28, 246, 228, 35, 9, 37, 19, 1, 236, 225, 215, 238, 231, 221, 188, 176, 45, 27, 255, 47, 13, 0, 227, 221, 199, 206, 177, 183, 218, 237, 5, 35, 14, 246, 233, 16, 248, 5, 232, 216, 194, 233, 229, 234, 240, 238, 210, 184, 179, 43, 21, 33, 1, 176, 186, 186, 192, 200, 204, 217, 223, 225, 218, 237, 237, 241, 32, 33, 254, 7, 241, 241, 232, 233, 223, 215, 200, 232, 199, 5, 89, 64, 41, 27, 5, 247, 209, 196, 159, 159, 132, 236, 247, 212, 183, 31, 29, 252, 64, 48, 7, 221, 199, 0, 253, 230, 209, 253, 250, 216, 180, 177, 208, 12, 81, 55, 10, 9, 232, 213, 183, 199, 187, 16, 5, 228, 203, 18, 29, 20, 0, 252, 245, 6, 243, 23, 7, 239, 221, 219, 219, 226, 188, 193, 6, 24, 247, 242, 3, 21, 243, 229, 199, 207, 176, 232, 215, 251, 240, 251, 1, 45, 25, 12, 249, 3, 241, 250, 240, 241, 248, 6, 243, 214, 175, 176, 169, 14, 1, 246, 253, 213, 187, 210, 232, 228, 227, 36, 6, 213, 200, 244, 12, 54, 79, 43, 9, 54, 22, 2, 8, 244, 213, 210, 204, 218, 187, 167, 251, 75, 38, 33, 5, 243, 203, 194, 169, 167, 143, 157, 201, 222, 219, 62, 55, 33, 16, 21, 254, 239, 210, 227, 218, 218, 208, 217, 214, 220, 181, 184, 168, 208, 226, 21, 2, 241, 199, 192, 158, 172, 180, 25, 1, 210, 176, 244, 18, 249, 3, 34, 6, 38, 31, 23, 4, 255, 20, 14, 241, 213, 178, 165, 232, 14, 253, 54, 16, 0, 229, 228, 212, 200, 173, 164, 167, 253, 34, 56, 41, 36, 22, 20, 248, 249, 221, 214, 194, 207, 3, 12, 246, 206, 169, 160, 190, 92, 70, 38, 9, 186, 185, 194, 214, 217, 213, 245, 249, 206, 177, 198, 206, 225, 32, 31, 250, 252, 231, 7, 239, 218, 186, 198, 229, 213, 173, 228, 59, 36, 20, 31, 2, 229, 185, 176, 147, 158, 181, 223, 224, 225, 254, 33, 15, 250, 43, 33, 251, 0, 234, 246, 229, 222, 207, 245, 236, 215, 165, 156, 135, 217, 57, 41, 10, 237, 206, 218, 197, 196, 186, 238, 236, 248, 225, 248, 241, 1, 242, 230, 231, 33, 21, 32, 17, 1, 237, 237, 230, 198, 175, 221, 234, 45, 30, 11, 245, 3, 230, 208, 169, 189, 173, 198, 3, 255, 230, 236, 44, 10, 25, 39, 5, 247, 221, 229, 218, 7, 10, 4, 247, 214, 171, 154, 129, 52, 44, 28, 10, 209, 195, 216, 217, 239, 255, 246, 223, 214, 182, 208, 21, 252, 70, 52, 10, 232, 21, 236, 5, 251, 249, 14, 246, 2, 229, 16, 236, 0, 224, 26, 19, 8, 245, 215, 31, 28, 229, 224, 34, 42, 34, 239, 22, 246, 13, 227, 18, 244, 230, 232, 11, 22, 5, 251, 251, 54, 188, 213, 57, 231, 24, 4, 4, 26, 248, 244, 239, 54, 30, 211, 1, 10, 241, 18, 215, 11, 68, 189, 37, 240, 232, 240, 38, 234, 6, 227, 30, 66, 229, 5, 7, 240, 13, 2, 244, 249, 253, 236, 36, 4, 228, 9, 3, 32, 48, 26, 39, 3, 0, 7, 235, 243, 5, 174, 249, 73, 236, 34, 247, 251, 1, 255, 10, 251, 246, 255, 9, 1, 247, 10, 0, 242, 11, 255, 254, 255, 11, 20, 96, 175, 234, 244, 247, 198, 9, 24, 226, 26, 221, 27, 244, 13, 238, 56, 197, 15, 249, 23, 241, 255, 6, 231, 14, 234, 236, 47, 245, 16, 2, 38, 233, 237, 226, 247, 40, 245, 5, 4, 250, 8, 26, 235, 245, 127, 4, 1, 6, 247, 2, 249, 254, 253, 7, 251, 10, 237, 7, 150, 91, 253, 9, 252, 21, 248, 26, 176, 8, 1, 254, 246, 239, 239, 229, 32, 71, 6, 227, 11, 233, 54, 218, 29, 234, 39, 87, 225, 244, 236, 3, 254, 254, 2, 20, 0, 255, 221, 27, 9, 250, 244, 3, 244, 250, 13, 1, 14, 234, 197, 241, 239, 231, 13, 249, 7, 3, 0, 1, 249, 6, 253, 61, 219, 233, 233, 227, 38, 225, 27, 1, 248, 2, 229, 23, 230, 36, 222, 5, 24, 232, 250, 7, 3, 197, 78, 194, 44, 240, 1, 6, 0, 17, 8, 45, 0, 146, 6, 14, 254, 32, 179, 200, 62, 253, 3, 243, 4, 240, 102, 241, 220, 255, 9, 143, 6, 23, 0, 9, 9, 5, 248, 255, 242, 5, 244, 121, 203, 229, 248, 247, 22, 243, 3, 2, 253, 1, 254, 185, 95, 38, 237, 15, 240, 251, 71, 10, 2, 224, 243, 251, 15, 255, 254, 242, 171, 30, 29, 6, 3, 2, 0, 0, 0, 0, 0, 0, 0, 0, 2, 191, 200, 247, 18, 18, 23, 242, 254, 0, 12, 227, 26, 244, 1, 2, 244, 192, 90, 250, 4, 1, 5, 251, 146, 253, 225, 22, 227, 9, 0, 8, 216, 251, 21, 251, 251, 13, 10, 238, 40, 1, 35, 236, 30, 228, 11, 250, 19, 7, 14, 18, 192, 9, 250, 16, 51, 68, 8, 16, 12, 248, 0, 247, 20, 234, 25, 7, 252, 243, 41, 221, 93, 238, 202, 11, 255, 1, 247, 4, 190, 66, 225, 20, 234, 25, 233, 11, 10, 9, 19, 15, 11, 251, 225, 246, 233, 228, 250, 250, 253, 252, 5, 3, 228, 22, 245, 214, 25, 231, 240, 41, 34, 47, 250, 2, 42, 237, 234, 5, 217, 32, 6, 221, 22, 17, 226, 8, 230, 245, 245, 3, 244, 33, 33, 219, 21, 255, 6, 252, 3, 0, 251, 5, 12, 244, 57, 27, 195, 253, 20, 239, 2, 0, 4, 0, 254, 223, 198, 81, 233, 39, 246, 251, 2, 6, 249, 5, 4, 253, 254, 243, 233, 184, 107, 15, 251, 0, 249, 253, 250, 5, 252, 15, 47, 12, 225, 25, 240, 8, 22, 231, 194, 200, 238, 14, 28, 12, 2, 245, 74, 190, 41, 236, 249, 16, 236, 16, 248, 0, 240, 4, 237, 92, 12, 197, 242, 217, 49, 231, 240, 23, 229, 19, 253, 223, 19, 85, 227, 6, 249, 246, 16, 249, 244, 1, 250, 2, 4, 254, 64, 10, 231, 41, 254, 225, 15, 0, 110, 50, 69, 35, 28, 19, 246, 2, 213, 207, 200, 241, 240, 10, 3, 12, 255, 248, 1, 26, 244, 255, 7, 245, 229, 41, 25, 1, 245, 238, 22, 249, 255, 209, 248, 23, 253, 239, 249, 18, 131, 59, 251, 3, 18, 1, 2, 3, 27, 221, 65, 203, 50, 210, 37, 235, 228, 7, 14, 219, 251, 251, 12, 5, 248, 78, 237, 21, 250, 240, 8, 249, 5, 2, 7, 2, 10, 250, 12, 196, 44, 11, 220, 224, 31, 0, 2, 254, 2, 1, 253, 7, 246, 17, 235, 10, 6, 254, 19, 254, 59, 218, 170, 38, 8, 215, 226, 211, 223, 7, 15, 28, 29, 249, 24, 216, 7, 7, 5, 254, 9, 24, 233, 238, 6, 227, 30, 2, 28, 49, 245, 210, 10, 43, 243, 247, 255, 253, 249, 249, 239, 250, 97, 223, 235, 3, 5, 1, 12, 213, 248, 28, 7, 213, 249, 17, 236, 19, 255, 2, 243, 9, 54, 34, 9, 228, 245, 247, 239, 110, 197, 44, 230, 0, 3, 244, 209, 73, 222, 213, 38, 223, 16, 251, 210, 252, 250, 254, 231, 19, 227, 28, 243, 5, 14, 27, 216, 213, 4, 32, 243, 254, 221, 252, 112, 214, 9, 244, 37, 228, 17, 14, 237, 35, 217, 23, 3, 242, 255, 199, 251, 94, 247, 3, 217, 5, 30, 246, 224, 42, 243, 242, 159, 193, 30, 247, 1, 249, 12, 5, 20, 17, 247, 220, 226, 25, 47, 247, 241, 12, 234, 98, 248, 206, 15, 229, 21, 240, 245, 2, 12, 246, 10, 253, 33, 36, 160, 0, 239, 31, 247, 9, 3, 236, 13, 245, 8, 252, 10, 246, 9, 1, 112, 186, 229, 5, 235, 2, 199, 253, 227, 10, 19, 235, 21, 246, 190, 253, 91, 221, 30, 244, 0, 249, 59, 228, 26, 2, 14, 238, 1, 1, 11, 17, 20, 202, 197, 27, 4, 29, 32, 5, 19, 12, 252, 1, 7, 246, 5, 254, 10, 0, 23, 251, 28, 152, 46, 11, 16, 3, 29, 1, 248, 242, 1, 7, 206, 88, 194, 26, 8, 239, 242, 50, 0, 32, 244, 253, 229, 18, 248, 251, 8, 3, 236, 245, 37, 244, 9, 33, 46, 155, 255, 252, 1, 6, 255, 28, 214, 241, 16, 5, 255, 254, 201, 85, 38, 247, 252, 11, 254, 247, 250, 3, 236, 246, 179, 89, 24, 253, 152, 199, 230, 225, 236, 250, 247, 14, 20, 233, 46, 241, 225, 28, 1, 241, 254, 6, 254, 31, 45, 180, 23, 231, 253, 254, 255, 0, 252, 5, 35, 216, 247, 13, 212, 5, 229, 255, 249, 6, 245, 7, 248, 7, 19, 242, 15, 252, 9, 246, 10, 248, 10, 247, 255, 1, 0, 0, 2, 5, 238, 22, 203, 50, 1, 233, 50, 220, 15, 3, 243, 14, 246, 6, 1, 5, 253, 4, 254, 5, 224, 25, 5, 254, 255, 252, 1, 11, 227, 26, 250, 241, 30, 238, 0, 15, 239, 40, 215, 3, 9, 254, 254, 3, 253, 255, 251, 2, 21, 250, 240, 235, 23, 2, 60, 15, 16, 240, 247, 14, 9, 255, 7, 247, 0, 1, 1, 0, 255, 250, 17, 228, 54, 211, 255, 1, 255, 250, 250, 2, 11, 26, 227, 254, 46, 235, 34, 12, 233, 32, 233, 16, 246, 3, 66, 19, 236, 24, 7, 11, 253, 0, 253, 255, 206, 210, 2, 238, 253, 4, 255, 254, 3, 253, 237, 41, 220, 9, 11, 232, 21, 240, 9, 253, 231, 253, 10, 18, 247, 254, 251, 255, 251, 6, 252, 253, 2, 230, 21, 237, 35, 241, 7, 243, 17, 237, 39, 213, 48, 225, 16, 247, 7, 254, 251, 3, 252, 9, 237, 27, 201, 63, 221, 10, 26, 212, 254, 9, 4, 1, 250, 8, 247, 5, 248, 255, 253, 240, 45, 214, 5, 15, 240, 10, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 240, 24, 201, 47, 218, 27, 237, 7, 253, 1, 16, 27, 20, 237, 18, 5, 249, 1, 251, 2, 250, 8, 234, 0, 253, 253, 8, 255, 7, 248, 1, 253, 5, 0, 17, 208, 58, 204, 29, 249, 254, 3, 246, 6, 230, 58, 225, 1, 250, 3, 93, 227, 39, 3, 17, 5, 6, 255, 255, 255, 27, 13, 10, 19, 249, 222, 12, 10, 252, 9, 180, 9, 8, 228, 254, 245, 2, 255, 3, 1, 173, 38, 217, 4, 240, 250, 254, 251, 5, 254, 201, 213, 22, 56, 65, 158, 235, 184, 16, 166, 231, 184, 119, 74, 146, 57, 58, 2, 113, 57, 175, 17, 28, 186, 232, 119, 200, 185, 171, 49, 149, 58, 1, 41, 11, 58, 133, 42, 2, 187, 236, 172, 35, 186, 2, 17, 84, 59, 176, 141, 22, 58, 0, 124, 163, 187, 40, 132, 135, 185, 79, 104, 241, 59, 26, 178, 254, 185, 23, 37, 44, 188, 13, 88, 248, 58, 129, 27, 111, 60, 184, 89, 141, 187, 222, 96, 163, 188, 140, 200, 7, 60, 205, 127, 222, 60, 17, 94, 115, 188, 154, 54, 26, 189, 97, 167, 216, 60, 35, 13, 99, 61, 14, 182, 80, 189, 160, 70, 200, 189, 209, 141, 13, 62, 250, 145, 235, 62, 250, 145, 235, 62, 209, 141, 13, 62, 160, 70, 200, 189, 14, 182, 80, 189, 35, 13, 99, 61, 97, 167, 216, 60, 154, 54, 26, 189, 17, 94, 115, 188, 205, 127, 222, 60, 140, 200, 7, 60, 222, 96, 163, 188, 184, 89, 141, 187, 129, 27, 111, 60, 13, 88, 248, 58, 23, 37, 44, 188, 26, 178, 254, 185, 79, 104, 241, 59, 40, 132, 135, 185, 0, 124, 163, 187, 176, 141, 22, 58, 2, 17, 84, 59, 236, 172, 35, 186, 133, 42, 2, 187, 1, 41, 11, 58, 171, 49, 149, 58, 232, 119, 200, 185, 175, 17, 28, 186, 58, 2, 113, 57, 119, 74, 146, 57, 16, 166, 231, 184, 65, 158, 235, 184, 201, 213, 22, 56, 132, 211, 122, 63, 222, 84, 164, 63, 80, 83, 215, 63, 153, 18, 13, 64, 190, 217, 56, 64, 143, 54, 114, 64, 33, 176, 158, 64, 141, 238, 207, 64, 126, 58, 8, 65, 178, 128, 50, 65, 54, 229, 105, 65, 29, 61, 153, 65, 166, 202, 200, 65, 234, 140, 3, 66, 125, 95, 44, 66, 16, 221, 97, 66, 224, 224, 224, 0, 228, 189, 251, 33, 214, 250, 224, 18, 199, 246, 202, 35, 240, 27, 215, 42, 19, 237, 216, 36, 211, 24, 235, 40, 248, 242, 238, 28, 1, 14, 198, 53, 238, 168, 217, 39, 218, 21, 238, 37, 237, 20, 213, 38, 10, 17, 208, 54, 204, 198, 243, 33, 212, 255, 245, 32, 244, 245, 222, 22, 14, 0, 210, 46, 219, 221, 222, 5, 231, 44, 226, 43, 6, 252, 193, 49, 225, 43, 215, 43, 233, 30, 213, 41, 213, 26, 242, 44, 223, 1, 243, 27, 243, 18, 219, 37, 210, 183, 211, 34, 220, 24, 231, 34, 220, 245, 236, 19, 231, 12, 238, 33, 220, 187, 197, 34, 211, 6, 8, 46, 234, 242, 232, 18, 255, 13, 212, 44, 217, 208, 230, 15, 224, 31, 219, 34, 223, 15, 210, 31, 232, 30, 220, 37, 215, 31, 233, 41, 206, 22, 252, 50, 234, 2, 235, 28, 239, 30, 222, 40, 249, 196, 228, 29, 218, 42, 228, 42, 212, 245, 21, 43, 240, 8, 212, 34, 217, 201, 213, 21, 245, 221, 26, 41, 247, 0, 222, 29, 248, 121, 175, 113, 7, 240, 234, 33, 219, 33, 225, 36, 229, 249, 220, 17, 222, 70, 199, 65, 219, 245, 208, 21, 216, 17, 255, 44, 223, 6, 250, 33, 247, 0, 236, 34, 235, 69, 223, 57, 227, 33, 225, 35, 201, 12, 255, 49, 223, 27, 234, 35, 206, 223, 209, 17, 206, 54, 51, 94, 255, 251, 212, 35, 252, 22, 216, 45, 217, 190, 231, 24, 223, 1, 230, 20, 232, 233, 231, 12, 245, 21, 211, 44, 231, 211, 237, 17, 213, 105, 240, 82, 5, 235, 1, 41, 240, 11, 223, 30, 243, 157, 252, 57, 219, 33, 241, 44, 231, 37, 193, 54, 220, 24, 225, 31, 203, 200, 218, 26, 215, 252, 4, 37, 223, 13, 226, 24, 49, 52, 162, 114, 251, 226, 241, 23, 1, 38, 216, 56, 233, 12, 220, 29, 239, 40, 209, 51, 219, 215, 217, 11, 207, 34, 0, 58, 238, 249, 252, 34, 240, 17, 229, 35, 30, 5, 194, 65, 4, 48, 188, 76, 213, 11, 245, 38, 238, 19, 241, 41, 233, 194, 217, 23, 214, 10, 254, 41, 235, 243, 243, 25, 247, 13, 209, 42, 233, 194, 232, 24, 212, 60, 235, 58, 238, 253, 204, 32, 234, 22, 220, 34, 181, 57, 16, 90, 237, 3, 10, 45, 227, 23, 218, 32, 251, 194, 205, 38, 205, 40, 238, 53, 214, 13, 232, 32, 222, 14, 236, 30, 200, 181, 230, 37, 230, 32, 15, 59, 230, 17, 227, 29, 249, 28, 204, 53, 244, 226, 5, 30, 251, 208, 251, 35, 2, 2, 213, 40, 21, 16, 16, 75, 231, 211, 224, 10, 213, 18, 246, 42, 9, 0, 255, 52, 255, 7, 226, 36, 19, 208, 252, 48, 228, 25, 227, 32, 234, 0, 225, 22, 224, 17, 246, 36, 192, 215, 194, 36, 204, 15, 16, 58, 226, 234, 224, 6, 249, 9, 218, 36, 224, 224, 224, 0, 225, 198, 240, 22, 215, 232, 213, 14, 200, 234, 201, 29, 243, 33, 215, 47, 252, 217, 247, 29, 215, 15, 244, 38, 248, 241, 244, 31, 1, 2, 212, 40, 234, 190, 214, 27, 218, 28, 233, 38, 235, 14, 219, 31, 0, 21, 206, 52, 203, 185, 229, 33, 219, 255, 237, 25, 237, 251, 228, 22, 6, 65, 212, 74, 223, 208, 223, 9, 216, 57, 242, 58, 239, 4, 211, 32, 225, 38, 223, 36, 233, 28, 216, 39, 213, 29, 244, 46, 222, 13, 233, 28, 240, 15, 229, 34, 242, 174, 241, 43, 225, 25, 224, 29, 235, 5, 251, 38, 209, 193, 205, 33, 210, 12, 3, 47, 228, 239, 227, 11, 246, 14, 216, 38, 87, 38, 156, 62, 44, 241, 176, 62, 27, 129, 200, 62, 51, 51, 227, 62, 120, 185, 0, 63, 194, 221, 17, 63, 82, 73, 37, 63, 115, 75, 59, 63, 79, 59, 84, 63, 212, 125, 112, 63, 137, 65, 136, 63, 19, 102, 154, 63, 241, 244, 174, 63, 100, 64, 198, 63, 206, 165, 224, 63, 92, 143, 254, 63, 42, 58, 16, 64, 47, 110, 35, 64, 232, 48, 57, 64, 85, 217, 81, 64, 67, 202, 109, 64, 203, 185, 134, 64, 17, 170, 152, 64, 202, 253, 172, 64, 79, 6, 196, 64, 8, 32, 222, 64, 104, 179, 251, 64, 113, 155, 14, 65, 85, 152, 33, 65, 120, 28, 55, 65, 254, 125, 79, 65, 153, 30, 107, 65, 119, 17, 230, 61, 227, 170, 114, 62, 253, 22, 189, 62, 128, 238, 251, 62, 77, 49, 35, 63, 22, 49, 84, 63, 17, 255, 144, 63, 0, 0, 0, 0, 115, 99, 122, 61, 154, 120, 39, 62, 116, 238, 158, 62, 167, 63, 219, 62, 156, 78, 14, 63, 253, 19, 56, 63, 64, 78, 112, 63, 2, 215, 169, 63, 76, 195, 96, 63, 0, 0, 0, 0, 144, 102, 52, 63, 4, 144, 134, 63, 242, 9, 13, 224, 2, 246, 31, 246, 248, 248, 6, 252, 255, 10, 192, 23, 6, 20, 13, 6, 8, 234, 16, 34, 7, 42, 207, 228, 5, 26, 4, 241, 41, 34, 41, 32, 33, 24, 23, 14, 8, 40, 34, 4, 232, 215, 237, 241, 13, 243, 33, 202, 24, 27, 212, 33, 27, 241, 241, 24, 237, 14, 220, 14, 247, 24, 244, 252, 37, 251, 16, 222, 5, 10, 33, 241, 202, 240, 12, 25, 12, 1, 2, 0, 3, 255, 252, 252, 11, 2, 200, 54, 27, 236, 13, 250, 210, 215, 223, 245, 251, 7, 12, 14, 242, 251, 8, 20, 6, 3, 4, 248, 251, 214, 11, 8, 242, 25, 254, 2, 13, 11, 234, 39, 247, 9, 5, 211, 247, 7, 247, 12, 249, 34, 239, 154, 7, 2, 214, 18, 35, 247, 222, 11, 251, 254, 3, 22, 46, 204, 231, 247, 162, 8, 11, 251, 251, 251, 4, 249, 221, 249, 54, 5, 224, 3, 24, 247, 234, 8, 65, 37, 255, 244, 233, 250, 247, 228, 55, 223, 14, 253, 2, 18, 196, 41, 239, 8, 240, 17, 245, 0, 245, 29, 228, 37, 9, 203, 33, 242, 247, 7, 231, 249, 245, 26, 224, 248, 24, 235, 22, 237, 19, 246, 29, 242, 0, 0, 0, 0, 0, 0, 0, 0, 251, 204, 10, 41, 6, 226, 252, 16, 32, 22, 229, 234, 32, 253, 228, 253, 3, 221, 6, 17, 23, 21, 8, 2, 4, 211, 239, 14, 23, 252, 225, 245, 253, 14, 1, 19, 245, 2, 61, 248, 9, 244, 7, 246, 12, 253, 232, 99, 208, 23, 50, 219, 251, 233, 0, 8, 242, 35, 192, 251, 46, 231, 13, 255, 207, 237, 241, 9, 34, 50, 25, 11, 250, 247, 240, 236, 224, 223, 224, 229, 10, 248, 12, 241, 56, 242, 224, 33, 3, 247, 1, 65, 247, 247, 246, 254, 250, 233, 9, 17, 3, 228, 13, 224, 4, 254, 246, 4, 240, 76, 12, 204, 6, 13, 33, 250, 4, 242, 247, 253, 1, 241, 240, 28, 1, 241, 11, 16, 9, 4, 235, 219, 216, 250, 22, 12, 241, 233, 242, 239, 240, 247, 246, 247, 13, 217, 41, 5, 247, 16, 218, 25, 46, 209, 4, 49, 242, 17, 254, 6, 18, 5, 250, 223, 234, 44, 50, 254, 1, 3, 250, 7, 7, 253, 235, 38, 238, 34, 242, 215, 60, 243, 6, 16, 232, 35, 19, 243, 220, 24, 3, 239, 242, 246, 36, 44, 212, 227, 253, 3, 202, 248, 12, 55, 26, 4, 254, 251, 2, 245, 22, 233, 2, 22, 1, 231, 217, 66, 207, 21, 248, 254, 10, 242, 196, 25, 6, 10, 27, 231, 16, 5, 254, 247, 26, 243, 236, 58, 254, 7, 52, 247, 2, 5, 252, 241, 23, 255, 218, 23, 8, 27, 250, 0, 229, 249, 39, 246, 242, 26, 11, 211, 244, 9, 251, 34, 4, 221, 10, 43, 234, 245, 56, 249, 20, 1, 10, 1, 230, 9, 94, 11, 229, 242, 243, 1, 245, 0, 14, 251, 250, 246, 252, 241, 248, 215, 21, 251, 1, 228, 248, 22, 247, 33, 233, 252, 252, 244, 39, 4, 249, 3, 196, 80, 8, 239, 2, 250, 12, 251, 1, 9, 15, 27, 31, 30, 27, 23, 61, 47, 26, 10, 251, 248, 244, 243, 5, 238, 25, 241, 252, 241, 245, 12, 254, 254, 240, 254, 250, 24, 12, 11, 252, 9, 1, 247, 14, 211, 57, 12, 20, 221, 26, 11, 192, 32, 246, 246, 42, 252, 247, 240, 32, 24, 7, 10, 52, 245, 199, 29, 0, 8, 0, 250, 17, 239, 200, 216, 7, 20, 18, 12, 250, 16, 5, 7, 255, 9, 1, 10, 29, 12, 16, 13, 254, 23, 7, 9, 253, 252, 251, 18, 192, 13, 55, 231, 9, 247, 24, 14, 231, 15, 245, 216, 226, 37, 1, 237, 22, 251, 225, 13, 254, 0, 7, 252, 16, 189, 12, 66, 220, 24, 248, 18, 241, 233, 19, 0, 211, 249, 4, 3, 243, 13, 35, 5, 13, 33, 10, 27, 23, 0, 249, 245, 43, 182, 36, 244, 2, 5, 248, 6, 223, 11, 240, 242, 251, 249, 253, 17, 222, 27, 240, 11, 247, 15, 33, 225, 8, 240, 7, 250, 249, 63, 201, 239, 11, 255, 20, 210, 34, 226, 6, 9, 19, 28, 247, 5, 232, 248, 233, 254, 31, 237, 240, 251, 241, 238, 0, 26, 18, 37, 251, 241, 254, 17, 5, 229, 21, 223, 44, 12, 229, 247, 17, 11, 25, 235, 225, 249, 13, 33, 248, 231, 249, 7, 246, 4, 250, 247, 48, 174, 233, 248, 6, 11, 233, 3, 253, 49, 227, 25, 31, 4, 14, 16, 9, 252, 238, 10, 230, 3, 5, 212, 247, 9, 209, 201, 15, 9, 28, 1, 4, 253, 46, 6, 250, 218, 227, 225, 241, 250, 3, 0, 14, 250, 8, 202, 206, 33, 251, 1, 242, 33, 208, 26, 252, 251, 253, 251, 253, 251, 228, 234, 77, 55, 255, 2, 10, 10, 247, 242, 190, 207, 11, 220, 250, 236, 10, 246, 16, 12, 4, 255, 240, 45, 212, 206, 31, 254, 25, 42, 23, 224, 234, 0, 11, 20, 216, 221, 216, 220, 224, 230, 235, 243, 52, 234, 6, 232, 236, 17, 251, 248, 36, 231, 245, 21, 230, 6, 34, 248, 7, 20, 253, 5, 231, 248, 18, 251, 247, 252, 1, 247, 20, 20, 39, 48, 232, 9, 5, 191, 22, 29, 4, 3, 213, 245, 32, 250, 9, 19, 229, 246, 209, 242, 24, 10, 249, 220, 249, 255, 252, 251, 251, 16, 53, 25, 230, 227, 252, 244, 45, 198, 222, 33, 251, 2, 255, 27, 208, 31, 241, 22, 251, 4, 7, 7, 231, 253, 11, 234, 16, 244, 8, 253, 7, 245, 45, 14, 183, 237, 56, 210, 24, 236, 28, 244, 254, 255, 220, 253, 223, 19, 250, 7, 2, 241, 5, 225, 211, 8, 35, 13, 20, 0, 247, 48, 243, 213, 253, 243, 2, 251, 72, 188, 229, 2, 1, 254, 249, 5, 36, 33, 216, 244, 252, 251, 23, 19, 1, 5, 241, 49, 190, 208, 252, 50, 212, 7, 37, 16, 238, 25, 230, 230, 241, 19, 19, 229, 209, 28, 57, 5, 239, 224, 215, 68, 21, 254, 64, 56, 8, 240, 243, 230, 247, 240, 11, 6, 217, 25, 237, 22, 225, 20, 211, 55, 213, 10, 240, 47, 216, 40, 236, 205, 3, 239, 242, 241, 232, 53, 236, 210, 46, 27, 188, 32, 3, 238, 251, 9, 225, 16, 247, 246, 255, 233, 48, 95, 47, 25, 215, 224, 253, 15, 231, 201, 36, 41, 229, 20, 5, 13, 14, 234, 5, 2, 233, 18, 46, 241, 17, 238, 222, 251, 248, 27, 201, 73, 16, 2, 255, 239, 40, 178, 33, 0, 2, 19, 4, 53, 240, 241, 240, 228, 253, 243, 49, 8, 249, 227, 27, 243, 32, 20, 32, 195, 16, 14, 41, 44, 40, 24, 20, 7, 4, 48, 196, 179, 17, 250, 208, 65, 241, 32, 226, 185, 246, 253, 250, 10, 254, 249, 227, 200, 67, 226, 7, 251, 86, 250, 246, 0, 5, 225, 60, 34, 218, 253, 24, 10, 254, 30, 23, 24, 215, 12, 70, 213, 15, 239, 6, 13, 16, 243, 8, 30, 241, 248, 5, 23, 222, 158, 252, 243, 13, 208, 225, 70, 12, 31, 25, 24, 232, 26, 249, 33, 240, 8, 5, 245, 242, 248, 191, 13, 10, 254, 247, 0, 253, 188, 5, 35, 7, 0, 225, 255, 239, 247, 247, 16, 219, 238, 255, 69, 208, 228, 22, 235, 245, 5, 49, 55, 23, 170, 220, 16, 2, 13, 63, 205, 30, 245, 13, 24, 238, 250, 14, 237, 1, 41, 9, 251, 27, 220, 212, 222, 219, 235, 230, 31, 217, 15, 43, 5, 248, 29, 20, 248, 236, 204, 228, 255, 13, 26, 222, 246, 247, 27, 248, 8, 27, 190, 4, 12, 234, 49, 10, 179, 32, 238, 3, 218, 12, 253, 255, 2, 2, 0, 248, 219, 5, 213, 5, 73, 61, 39, 12, 253, 195, 224, 2, 42, 30, 253, 17, 229, 9, 34, 20, 255, 251, 2, 23, 249, 210, 26, 53, 209, 20, 254, 223, 167, 205, 192, 27, 11, 15, 222, 251, 200, 25, 247, 255, 227, 1, 40, 67, 233, 240, 16, 33, 19, 7, 14, 85, 22, 246, 246, 244, 249, 255, 52, 89, 29, 11, 236, 219, 210, 241, 17, 232, 228, 24, 2, 1, 0, 23, 155, 23, 14, 255, 233, 238, 9, 5, 243, 38, 1, 228, 228, 4, 27, 51, 230, 34, 216, 35, 47, 54, 38, 202, 230, 250, 42, 231, 13, 226, 220, 18, 41, 252, 223, 23, 224, 249, 252, 51, 253, 17, 204, 56, 209, 36, 254, 235, 36, 10, 8, 223, 31, 19, 9, 251, 216, 10, 247, 235, 19, 18, 178, 238, 251, 0, 230, 220, 209, 205, 212, 18, 40, 27, 254, 29, 49, 230, 2, 32, 202, 30, 183, 54, 3, 251, 36, 22, 53, 10, 255, 172, 203, 227, 251, 3, 212, 53, 205, 4, 22, 71, 221, 255, 33, 251, 229, 249, 36, 17, 233, 217, 16, 247, 201, 241, 236, 39, 221, 6, 217, 242, 18, 48, 192, 239, 241, 9, 39, 81, 37, 188, 37, 47, 235, 250, 152, 13, 6, 9, 254, 35, 8, 233, 18, 42, 45, 21, 33, 251, 207, 9, 250, 213, 200, 39, 2, 240, 231, 87, 1, 253, 247, 17, 231, 245, 247, 255, 10, 2, 242, 242, 4, 255, 246, 28, 233, 40, 224, 26, 247, 26, 4, 229, 233, 3, 42, 196, 1, 49, 253, 27, 10, 204, 216, 254, 18, 45, 233, 17, 212, 3, 253, 17, 210, 52, 216, 209, 25, 75, 31, 207, 53, 30, 226, 224, 220, 38, 250, 241, 240, 54, 229, 208, 3, 38, 227, 224, 234, 242, 252, 233, 243, 32, 217, 9, 8, 211, 243, 34, 240, 49, 40, 32, 31, 28, 23, 23, 32, 47, 59, 188, 8, 62, 44, 25, 242, 232, 191, 240, 36, 67, 231, 218, 235, 4, 223, 254, 42, 5, 193, 40, 11, 26, 214, 233, 195, 79, 225, 23, 236, 10, 224, 53, 231, 220, 10, 230, 251, 3, 0, 185, 5, 246, 219, 1, 232, 21, 202, 239, 1, 227, 231, 241, 229, 32, 68, 45, 240, 219, 238, 251, 1, 0, 179, 71, 250, 3, 236, 71, 189, 29, 221, 10, 226, 19, 4, 16, 17, 5, 0, 242, 19, 2, 28, 26, 59, 3, 2, 24, 39, 55, 206, 211, 238, 239, 33, 221, 14, 255, 1, 8, 87, 221, 227, 0, 229, 13, 249, 23, 243, 37, 216, 50, 221, 14, 19, 249, 242, 49, 54, 251, 22, 254, 227, 248, 229, 38, 13, 27, 48, 12, 215, 235, 241, 28, 7, 240, 232, 237, 236, 11, 236, 9, 2, 13, 23, 236, 11, 27, 229, 71, 187, 8, 2, 250, 22, 12, 16, 16, 9, 240, 248, 239, 1, 25, 1, 40, 219, 223, 66, 94, 53, 4, 234, 231, 215, 214, 25, 35, 240, 241, 57, 31, 227, 224, 21, 16, 196, 45, 15, 255, 7, 57, 230, 209, 227, 11, 8, 15, 19, 151, 248, 54, 27, 10, 239, 6, 244, 255, 246, 4, 0, 23, 246, 31, 13, 11, 10, 12, 192, 23, 253, 248, 237, 16, 52, 24, 216, 16, 10, 40, 5, 9, 0, 243, 249, 235, 248, 250, 249, 235, 59, 16, 203, 18, 196, 11, 209, 14, 238, 25, 243, 232, 4, 217, 16, 228, 54, 26, 189, 30, 27, 236, 204, 20, 244, 55, 12, 18, 240, 39, 242, 250, 230, 56, 168, 201, 12, 25, 26, 219, 6, 75, 0, 222, 175, 54, 226, 1, 249, 49, 233, 242, 21, 10, 194, 198, 199, 209, 222, 15, 252, 34, 178, 31, 25, 245, 7, 50, 246, 42, 193, 14, 220, 252, 57, 55, 57, 53, 42, 214, 255, 15, 40, 37, 15, 25, 245, 6, 1, 31, 254, 250, 255, 249, 192, 34, 28, 30, 255, 3, 21, 0, 168, 244, 200, 25, 228, 40, 8, 228, 242, 9, 12, 2, 250, 239, 22, 49, 250, 230, 14, 28, 236, 4, 244, 50, 35, 40, 13, 218, 198, 227, 17, 30, 22, 60, 26, 202, 217, 244, 58, 228, 193, 10, 235, 248, 244, 26, 194, 6, 246, 245, 234, 250, 249, 4, 1, 18, 2, 186, 11, 14, 4, 13, 19, 232, 222, 24, 67, 17, 51, 235, 13, 23, 54, 226, 48, 1, 243, 80, 26, 240, 254, 13, 252, 6, 226, 29, 232, 73, 198, 30, 229, 20, 254, 235, 41, 45, 30, 229, 253, 251, 238, 236, 207, 253, 221, 10, 42, 237, 189, 203, 245, 9, 13, 241, 223, 205, 226, 15, 7, 25, 226, 4, 28, 234, 222, 54, 227, 39, 210, 20, 16, 34, 252, 47, 75, 1, 212, 201, 232, 7, 255, 9, 214, 50, 248, 220, 41, 68, 0, 252, 246, 233, 241, 206, 64, 36, 247, 229, 12, 25, 218, 209, 219, 32, 207, 51, 220, 2, 252, 69, 230, 19, 7, 45, 67, 46, 13, 193, 46, 15, 209, 4, 215, 13, 250, 5, 235, 37, 26, 201, 249, 33, 255, 228, 10, 239, 192, 242, 0, 220, 239, 93, 253, 247, 190, 44, 235, 3, 244, 38, 250, 243, 244, 19, 13, 43, 213, 246, 244, 6, 251, 9, 207, 32, 251, 2, 4, 5, 15, 240, 10, 235, 8, 194, 248, 64, 8, 79, 255, 190, 207, 238, 5, 40, 251, 226, 211, 1, 250, 21, 224, 93, 238, 226, 235, 32, 21, 238, 22, 8, 5, 215, 202, 80, 22, 246, 249, 248, 233, 192, 66, 56, 242, 226, 215, 210, 242, 227, 219, 27, 242, 42, 254, 247, 227, 34, 14, 33, 242, 22, 4, 10, 26, 26, 28, 32, 23, 184, 224, 3, 0, 242, 35, 214, 178, 224, 6, 29, 238, 211, 251, 7, 223, 211, 253, 234, 222, 8, 248, 4, 205, 231, 247, 59, 178, 21, 251, 231, 208, 66, 241, 239, 232, 207, 243, 25, 233, 192, 250, 40, 232, 237, 245, 57, 223, 248, 1, 10, 204, 202, 28, 39, 49, 34, 245, 195, 215, 213, 10, 15, 241, 51, 30, 15, 205, 32, 222, 254, 222, 14, 18, 16, 1, 1, 253, 253, 1, 1, 238, 6, 16, 48, 12, 251, 214, 7, 36, 48, 7, 236, 246, 7, 12, 2, 54, 39, 218, 37, 54, 4, 245, 248, 210, 246, 5, 246, 222, 46, 244, 29, 219, 39, 36, 245, 24, 56, 17, 14, 20, 25, 0, 231, 228, 55, 249, 251, 27, 3, 9, 230, 248, 6, 232, 246, 226, 225, 222, 18, 4, 22, 21, 40, 255, 227, 219, 248, 235, 92, 227, 11, 253, 11, 73, 23, 22, 7, 4, 212, 247, 245, 21, 243, 11, 9, 178, 255, 47, 114, 244, 219, 237, 251, 245, 234, 19, 12, 226, 7, 38, 45, 235, 248, 247, 55, 211, 56, 235, 7, 17, 46, 199, 169, 250, 27, 31, 31, 7, 200, 244, 46, 21, 251, 244, 36, 3, 3, 235, 43, 19, 12, 249, 9, 242, 0, 247, 223, 165, 7, 26, 3, 245, 64, 83, 225, 210, 25, 2, 9, 5, 2, 2, 255, 20, 239, 10, 251, 229, 248, 20, 8, 237, 16, 235, 243, 225, 5, 5, 42, 24, 9, 34, 236, 28, 195, 22, 11, 217, 64, 236, 255, 226, 247, 236, 24, 231, 232, 227, 22, 196, 6, 251, 41, 247, 169, 14, 34, 15, 199, 52, 69, 15, 253, 154, 58, 16, 3, 6, 60, 181, 224, 26, 7, 199, 229, 224, 232, 235, 227, 240, 62, 210, 31, 30, 229, 241, 7, 15, 12, 32, 25, 46, 36, 33, 9, 14, 253, 6, 1, 248, 0, 246, 251, 249, 249, 249, 251, 251, 31, 229, 24, 224, 252, 10, 245, 21, 253, 19, 23, 247, 22, 24, 246, 255, 246, 243, 249, 245, 42, 223, 31, 19, 248, 0, 246, 240, 1, 235, 239, 10, 248, 14, 8, 4, 11, 254, 5, 254, 223, 11, 240, 33, 11, 252, 9, 252, 11, 2, 6, 251, 8, 251, 11, 252, 250, 26, 220, 240, 0, 4, 254, 248, 12, 6, 255, 34, 210, 234, 9, 9, 21, 9, 5, 190, 251, 26, 2, 10, 13, 2, 19, 9, 12, 175, 3, 13, 13, 0, 242, 22, 221, 6, 249, 252, 6, 250, 10, 250, 225, 38, 223, 0, 246, 245, 5, 244, 12, 239, 5, 0, 250, 13, 247, 10, 8, 25, 33, 2, 244, 8, 250, 10, 254, 21, 7, 17, 43, 5, 11, 249, 247, 236, 220, 236, 233, 252, 252, 253, 27, 247, 247, 207, 217, 218, 245, 247, 6, 5, 23, 25, 5, 3, 3, 4, 1, 2, 253, 255, 87, 39, 17, 235, 247, 237, 247, 241, 243, 242, 239, 245, 246, 245, 248, 250, 255, 253, 253, 255, 202, 222, 229, 248, 245, 252, 251, 0, 0, 4, 8, 6, 9, 7, 9, 7, 6, 5, 5, 5, 48, 10, 19, 246, 12, 255, 9, 253, 2, 5, 253, 2, 254, 254, 0, 254, 230, 6, 9, 249, 240, 247, 2, 7, 7, 251, 213, 11, 22, 245, 247, 34, 37, 241, 243, 250, 1, 255, 1, 1, 192, 56, 52, 245, 229, 5, 4, 3, 1, 2, 1, 3, 255, 252, 252, 246, 249, 252, 252, 2, 255, 249, 249, 244, 246, 241, 247, 251, 251, 245, 240, 243, 6, 16, 4, 243, 240, 246, 252, 2, 209, 243, 25, 47, 19, 242, 236, 248, 239, 0, 253, 243, 1, 6, 239, 242, 15, 1, 10, 6, 232, 0, 246, 19, 187, 248, 14, 49, 17, 251, 33, 227, 3, 252, 0, 2, 248, 5, 250, 2, 120, 200, 244, 209, 23, 247, 6, 251, 1, 2, 251, 1, 246, 4, 255, 255, 4, 255, 0, 253, 30, 204, 189, 30, 22, 11, 255, 252, 3, 0, 7, 2, 0, 1, 246, 252, 248, 243, 5, 1, 1, 255, 5, 13, 247, 253, 246, 194, 22, 48, 252, 250, 2, 3, 5, 1, 1, 4, 1, 13, 3, 236, 10, 247, 13, 254, 252, 9, 236, 44, 255, 20, 224, 189, 19, 0, 28, 11, 8, 2, 245, 15, 237, 203, 31, 2, 34, 10, 6, 252, 198, 8, 10, 13, 14, 1, 12, 2, 0, 0, 128, 37, 248, 44, 247, 26, 253, 18, 2, 6, 11, 255, 9, 1, 5, 3, 0, 1, 1, 2, 12, 3, 254, 253, 7, 25, 9, 18, 250, 219, 3, 248, 240, 3, 246, 249, 17, 222, 212, 11, 17, 241, 253, 240, 255, 243, 11, 210, 191, 254, 8, 13, 2, 4, 4, 5, 15, 5, 9, 6, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 247, 19, 244, 12, 228, 38, 29, 255, 12, 2, 5, 23, 246, 3, 4, 241, 21, 252, 3, 3, 6, 17, 247, 252, 248, 236, 26, 5, 246, 6, 1, 237, 18, 241, 244, 47, 250, 254, 249, 247, 255, 239, 254, 254, 242, 30, 242, 2, 249, 252, 255, 244, 11, 231, 16, 253, 244, 11, 249, 7, 239, 1, 19, 228, 31, 249, 246, 7, 246, 3, 12, 5, 240, 6, 24, 41, 227, 202, 0, 1, 7, 255, 5, 250, 13, 10, 252, 248, 8, 247, 229, 203, 218, 255, 10, 19, 17, 16, 12, 12, 0, 3, 249, 252, 13, 12, 225, 242, 6, 251, 3, 5, 17, 43, 50, 25, 10, 1, 250, 254, 7, 17, 17, 27, 25, 22, 12, 4, 253, 0, 28, 220, 39, 232, 241, 3, 247, 15, 251, 10, 31, 228, 11, 31, 235, 9, 245, 245, 254, 249, 231, 14, 234, 31, 4, 242, 19, 244, 14, 251].concat([4, 249, 4, 251, 9, 0, 254, 42, 209, 240, 1, 8, 0, 9, 23, 199, 0, 28, 245, 6, 225, 55, 211, 3, 251, 4, 2, 254, 4, 249, 253, 6, 254, 7, 253, 12, 5, 8, 54, 246, 8, 249, 248, 232, 231, 229, 242, 251, 8, 5, 44, 23, 5, 247, 245, 245, 243, 247, 244, 248, 227, 248, 234, 6, 241, 3, 244, 255, 251, 253, 34, 255, 29, 240, 17, 252, 12, 2, 1, 4, 254, 252, 2, 255, 11, 253, 204, 28, 30, 247, 224, 25, 44, 236, 232, 4, 6, 255, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 231, 246, 22, 29, 13, 243, 234, 243, 252, 0, 252, 240, 10, 15, 220, 232, 28, 25, 255, 253, 66, 223, 245, 241, 6, 0, 3, 4, 254, 5, 24, 236, 209, 29, 19, 254, 252, 255, 0, 255, 254, 3, 1, 8, 245, 5, 5, 199, 28, 28, 0, 240, 4, 252, 12, 250, 255, 2, 236, 61, 247, 24, 234, 214, 29, 6, 17, 8, 4, 2, 191, 15, 8, 10, 5, 6, 5, 3, 2, 254, 253, 5, 247, 4, 251, 23, 13, 23, 253, 193, 3, 251, 252, 250, 0, 253, 23, 220, 210, 9, 5, 5, 8, 4, 9, 251, 1, 253, 10, 1, 250, 10, 245, 24, 209, 31, 22, 244, 14, 246, 6, 11, 249, 249, 7, 225, 51, 244, 250, 7, 6, 239, 9, 245, 236, 52, 237, 3, 250, 250, 248, 251, 23, 215, 37, 1, 235, 10, 242, 8, 7, 5, 241, 241, 23, 39, 230, 223, 7, 2, 224, 226, 235, 248, 4, 12, 17, 15, 14, 11, 22, 39, 14, 44, 11, 35, 254, 23, 252, 6, 46, 228, 13, 229, 233, 12, 4, 20, 251, 9, 37, 238, 233, 23, 0, 9, 250, 236, 4, 255, 239, 251, 252, 17, 0, 1, 9, 254, 1, 2, 2, 244, 8, 231, 39, 15, 9, 16, 201, 245, 9, 11, 5, 10, 254, 196, 8, 13, 250, 11, 240, 27, 209, 244, 11, 1, 16, 249, 9, 253, 227, 9, 242, 25, 237, 34, 36, 12, 40, 246, 253, 232, 242, 219, 235, 221, 254, 220, 3, 250, 67, 28, 6, 239, 253, 244, 240, 241, 239, 249, 197, 220, 243, 1, 7, 1, 2, 10, 2, 11, 13, 10, 8, 254, 7, 3, 5, 4, 2, 2, 253, 248, 4, 251, 6, 7, 214, 15, 35, 254, 210, 38, 28, 236, 247, 1, 7, 253, 0, 254, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 241, 228, 52, 32, 5, 251, 239, 236, 246, 255, 215, 163, 144, 62, 162, 69, 182, 62, 203, 161, 229, 62, 0, 0, 0, 0, 0, 0, 128, 62, 174, 71, 161, 62, 150, 67, 203, 62, 0, 0, 0, 63, 250, 53, 235, 232, 4, 26, 17, 252, 219, 25, 17, 220, 243, 31, 3, 250, 27, 15, 246, 31, 28, 26, 246, 246, 216, 16, 249, 15, 13, 41, 247, 0, 252, 50, 250, 249, 14, 38, 22, 0, 208, 2, 1, 243, 237, 32, 253, 196, 11, 239, 255, 232, 222, 255, 35, 251, 229, 28, 44, 13, 25, 15, 42, 245, 15, 51, 35, 220, 20, 8, 252, 244, 227, 19, 209, 49, 241, 252, 16, 227, 217, 14, 226, 4, 25, 247, 251, 205, 242, 253, 216, 224, 38, 5, 247, 248, 252, 255, 234, 71, 253, 14, 26, 238, 234, 24, 215, 231, 232, 6, 23, 19, 246, 39, 230, 229, 65, 45, 2, 249, 230, 248, 22, 244, 16, 15, 16, 221, 251, 33, 235, 248, 0, 23, 33, 34, 6, 21, 36, 6, 249, 234, 8, 219, 242, 31, 38, 11, 252, 253, 217, 224, 248, 32, 233, 250, 244, 16, 20, 228, 252, 23, 13, 204, 255, 22, 6, 223, 216, 250, 4, 194, 13, 5, 230, 35, 39, 11, 2, 57, 245, 9, 236, 228, 223, 52, 251, 250, 254, 22, 242, 240, 208, 35, 1, 198, 20, 13, 33, 255, 182, 56, 238, 234, 225, 12, 6, 242, 4, 254, 247, 209, 10, 253, 29, 239, 251, 61, 14, 47, 244, 2, 72, 217, 239, 92, 64, 203, 205, 241, 226, 218, 215, 227, 228, 27, 9, 36, 9, 221, 214, 81, 235, 20, 25, 240, 251, 239, 221, 21, 15, 228, 48, 2, 254, 9, 237, 29, 216, 30, 238, 238, 18, 240, 199, 15, 236, 244, 241, 219, 241, 33, 217, 21, 234, 243, 35, 11, 13, 218, 193, 29, 23, 229, 32, 18, 3, 230, 42, 33, 192, 190, 239, 16, 56, 2, 36, 3, 31, 21, 215, 217, 8, 199, 14, 37, 254, 19, 220, 237, 233, 227, 240, 1, 253, 248, 246, 31, 64, 191, 222, 204, 241, 45, 2, 23, 21, 52, 24, 223, 247, 255, 9, 212, 215, 243, 239, 44, 22, 239, 250, 252, 255, 22, 38, 26, 16, 2, 50, 27, 221, 222, 247, 215, 6, 0, 240, 222, 51, 8, 242, 225, 207, 15, 223, 45, 49, 33, 245, 219, 194, 202, 45, 11, 251, 184, 11, 255, 244, 245, 24, 27, 245, 213, 46, 43, 33, 244, 247, 255, 1, 252, 233, 199, 185, 11, 8, 16, 17, 248, 236, 225, 215, 53, 48, 240, 3, 65, 232, 248, 233, 224, 219, 224, 207, 246, 239, 6, 38, 5, 247, 239, 210, 8, 52, 3, 6, 45, 40, 39, 249, 250, 222, 182, 31, 8, 1, 240, 43, 68, 245, 237, 225, 4, 6, 0, 250, 239, 240, 218, 240, 226, 2, 9, 217, 240, 255, 43, 246, 48, 3, 3, 240, 225, 253, 62, 68, 43, 13, 3, 246, 8, 20, 200, 12, 12, 254, 238, 22, 241, 216, 220, 1, 7, 41, 0, 1, 46, 250, 194, 252, 244, 254, 245, 173, 243, 254, 91, 33, 246, 0, 4, 245, 240, 79, 32, 37, 14, 9, 51, 235, 228, 200, 222, 0, 21, 9, 230, 11, 28, 214, 202, 233, 254, 241, 31, 30, 8, 217, 190, 217, 220, 31, 228, 216, 210, 35, 40, 22, 24, 33, 48, 23, 222, 14, 40, 32, 17, 27, 253, 25, 26, 243, 195, 239, 11, 4, 31, 60, 250, 230, 215, 192, 13, 16, 230, 54, 31, 245, 233, 247, 245, 222, 185, 235, 222, 221, 55, 50, 29, 234, 229, 206, 218, 57, 33, 42, 57, 48, 26, 11, 0, 207, 225, 26, 252, 242, 5, 78, 37, 17, 0, 207, 244, 233, 26, 14, 2, 2, 213, 239, 244, 10, 248, 252, 8, 18, 12, 250, 20, 244, 250, 243, 231, 34, 15, 40, 49, 7, 8, 13, 20, 20, 237, 234, 254, 248, 2, 51, 205, 11, 47, 16, 247, 210, 224, 26, 192, 34, 251, 38, 249, 47, 20, 2, 183, 157, 253, 211, 20, 70, 204, 15, 250, 249, 174, 31, 21, 47, 51, 39, 253, 9, 0, 215, 249, 241, 202, 2, 0, 27, 225, 9, 211, 234, 218, 232, 232, 8, 223, 23, 5, 50, 220, 239, 238, 205, 254, 13, 19, 43, 12, 241, 244, 61, 38, 38, 7, 13, 0, 6, 255, 3, 62, 9, 27, 22, 223, 38, 221, 247, 30, 213, 247, 224, 255, 4, 252, 1, 251, 245, 248, 38, 31, 11, 246, 214, 235, 219, 1, 43, 15, 243, 221, 237, 238, 15, 23, 230, 59, 1, 235, 53, 8, 215, 206, 242, 228, 4, 21, 25, 228, 216, 5, 216, 215, 4, 51, 223, 248, 248, 1, 17, 196, 12, 25, 215, 17, 34, 43, 19, 45, 7, 219, 24, 241, 56, 254, 35, 246, 48, 4, 209, 254, 5, 251, 202, 5, 253, 223, 246, 30, 254, 212, 232, 218, 9, 247, 42, 4, 6, 200, 44, 240, 9, 216, 230, 18, 236, 10, 28, 215, 235, 252, 13, 238, 32, 226, 253, 37, 15, 22, 28, 50, 216, 3, 227, 192, 7, 51, 237, 245, 17, 229, 216, 192, 24, 244, 249, 229, 3, 37, 48, 255, 2, 247, 218, 222, 46, 1, 27, 250, 19, 243, 26, 10, 34, 20, 25, 40, 50, 250, 249, 30, 9, 232, 0, 233, 71, 195, 22, 58, 222, 252, 2, 207, 223, 25, 30, 248, 250, 240, 77, 2, 38, 248, 221, 250, 226, 56, 78, 31, 33, 236, 13, 217, 20, 22, 4, 21, 248, 4, 250, 10, 173, 215, 9, 231, 213, 15, 249, 244, 222, 217, 219, 223, 19, 30, 16, 223, 42, 231, 25, 188, 44, 241, 245, 252, 23, 50, 14, 4, 217, 213, 20, 226, 60, 9, 236, 7, 16, 19, 223, 37, 29, 16, 221, 7, 38, 229, 230, 248, 29, 21, 4, 19, 217, 33, 249, 220, 56, 54, 48, 40, 29, 252, 232, 214, 190, 213, 196, 19, 254, 37, 41, 246, 219, 196, 192, 18, 234, 77, 73, 40, 25, 4, 19, 237, 190, 254, 11, 5, 21, 14, 26, 231, 170, 252, 18, 1, 26, 219, 10, 37, 255, 24, 244, 197, 245, 20, 250, 34, 240, 240, 42, 19, 228, 205, 53, 32, 4, 10, 62, 21, 244, 222, 27, 4, 208, 208, 206, 207, 31, 249, 235, 214, 231, 252, 213, 234, 59, 2, 27, 12, 247, 250, 240, 248, 224, 198, 240, 227, 251, 41, 23, 226, 223, 210, 243, 246, 218, 52, 52, 1, 239, 247, 10, 26, 231, 250, 33, 236, 53, 55, 25, 224, 251, 214, 23, 21, 66, 5, 228, 20, 9, 75, 29, 249, 214, 217, 15, 3, 233, 21, 6, 11, 1, 227, 14, 63, 10, 54, 26, 232, 205, 207, 7, 233, 205, 15, 190, 1, 60, 25, 10, 0, 226, 252, 241, 17, 19, 59, 40, 4, 251, 33, 6, 234, 198, 186, 251, 23, 250, 60, 44, 227, 240, 209, 227, 52, 237, 50, 28, 16, 35, 31, 36, 0, 235, 6, 21, 27, 22, 42, 7, 190, 216, 248, 7, 19, 46, 0, 252, 60, 36, 45, 249, 227, 250, 224, 217, 2, 6, 247, 33, 20, 205, 222, 18, 250, 19, 6, 11, 5, 237, 227, 254, 42, 245, 211, 235, 201, 57, 37, 2, 242, 189, 240, 229, 218, 69, 48, 19, 2, 239, 20, 236, 240, 222, 239, 231, 195, 10, 73, 45, 16, 216, 192, 239, 227, 234, 56, 17, 217, 8, 245, 8, 231, 238, 243, 237, 8, 54, 57, 36, 239, 230, 252, 6, 235, 40, 42, 252, 20, 31, 53, 10, 222, 203, 31, 239, 35, 0, 15, 250, 236, 193, 183, 22, 25, 29, 17, 8, 227, 217, 187, 18, 15, 241, 251, 30, 19, 38, 34, 40, 32, 46, 43, 58, 43, 5, 238, 231, 216, 223, 201, 204, 20, 34, 28, 236, 193, 159, 164, 61, 53, 47, 49, 53, 75, 242, 203, 179, 177, 0, 253, 251, 19, 22, 26, 247, 203, 201, 66, 90, 72, 85, 68, 74, 52, 252, 215, 198, 225, 238, 225, 27, 32, 30, 18, 24, 3, 8, 5, 244, 253, 26, 28, 74, 63, 254, 217, 189, 179, 150, 182, 59, 59, 73, 65, 44, 40, 71, 72, 82, 83, 98, 88, 89, 60, 250, 225, 209, 208, 243, 217, 247, 7, 2, 79, 255, 217, 196, 239, 87, 81, 65, 50, 45, 19, 235, 189, 165, 169, 215, 206, 7, 18, 39, 74, 10, 225, 228, 39, 24, 13, 23, 5, 56, 45, 29, 10, 251, 243, 245, 221, 238, 248, 246, 248, 231, 185, 179, 235, 2, 16, 50, 63, 87, 87, 5, 224, 216, 205, 188, 0, 12, 6, 54, 34, 5, 244, 32, 52, 68, 64, 69, 59, 65, 45, 14, 240, 225, 216, 191, 189, 41, 49, 47, 37, 245, 204, 181, 172, 252, 57, 48, 42, 42, 33, 245, 205, 188, 250, 13, 0, 8, 248, 26, 32, 233, 203, 0, 36, 56, 76, 97, 105, 111, 97, 255, 228, 217, 216, 213, 202, 212, 216, 238, 35, 16, 236, 237, 228, 214, 29, 47, 38, 74, 45, 3, 227, 208, 194, 176, 152, 223, 56, 59, 59, 10, 17, 46, 72, 84, 101, 117, 123, 123, 106, 249, 223, 207, 205, 186, 189, 229, 225, 70, 67, 240, 194, 171, 236, 82, 71, 86, 80, 85, 74, 237, 198, 181, 211, 227, 223, 238, 231, 45, 57, 244, 214, 251, 12, 28, 36, 52, 64, 81, 82, 13, 247, 229, 228, 22, 3, 2, 22, 26, 6, 250, 212, 205, 2, 15, 10, 48, 43, 49, 34, 237, 194, 172, 167, 154, 232, 8, 17, 61, 68, 39, 24, 23, 19, 16, 251, 12, 15, 27, 15, 248, 212, 207, 196, 238, 224, 228, 52, 54, 62, 248, 208, 179, 186, 66, 101, 83, 63, 61, 37, 244, 206, 181, 192, 33, 17, 13, 25, 15, 77, 1, 214, 227, 72, 64, 46, 49, 31, 61, 44, 248, 209, 202, 210, 226, 19, 20, 255, 240, 0, 16, 244, 238, 247, 230, 229, 246, 234, 53, 45, 246, 209, 181, 174, 151, 147, 8, 25, 49, 77, 50, 65, 114, 117, 124, 118, 115, 96, 90, 61, 247, 211, 193, 196, 181, 199, 8, 11, 20, 29, 0, 221, 207, 213, 40, 47, 35, 40, 55, 38, 232, 180, 153, 144, 229, 3, 23, 34, 52, 75, 8, 227, 213, 12, 63, 38, 35, 29, 24, 8, 25, 11, 1, 241, 238, 213, 249, 37, 40, 21, 236, 200, 237, 237, 252, 254, 11, 29, 51, 63, 254, 212, 194, 181, 167, 30, 57, 51, 74, 51, 50, 46, 68, 64, 65, 52, 63, 55, 65, 43, 18, 247, 230, 221, 201, 187, 3, 6, 8, 17, 241, 195, 170, 159, 1, 86, 93, 74, 78, 67, 255, 218, 190, 208, 48, 39, 29, 25, 17, 255, 13, 13, 29, 39, 50, 51, 69, 82, 97, 98, 254, 220, 210, 229, 240, 226, 243, 252, 249, 252, 25, 251, 245, 250, 231, 235, 33, 12, 31, 29, 248, 218, 204, 193, 188, 167, 223, 255, 10, 74, 254, 241, 59, 91, 105, 105, 101, 87, 84, 62, 249, 223, 206, 221, 202, 209, 25, 17, 82, 81, 243, 200, 173, 21, 58, 31, 42, 25, 72, 65, 232, 190, 165, 200, 9, 254, 21, 10, 69, 75, 2, 232, 11, 22, 25, 28, 38, 34, 48, 33, 7, 227, 230, 17, 15, 255, 14, 0, 254, 0, 250, 215, 189, 6, 254, 247, 19, 2, 85, 74, 234, 189, 172, 185, 206, 3, 11, 247, 2, 62, 0, 0, 128, 63, 25, 4, 118, 63, 172, 28, 90, 63, 33, 176, 50, 63, 121, 233, 6, 63, 127, 106, 188, 62, 33, 176, 114, 62, 78, 98, 16, 62, 45, 178, 157, 61, 119, 190, 31, 61, 119, 97, 114, 110, 105, 110, 103, 58, 32, 37, 115, 32, 37, 100, 10, 0, 110, 97, 114, 114, 111, 119, 98, 97, 110, 100, 0, 0, 0, 0, 0, 0, 85, 110, 107, 110, 111, 119, 110, 32, 110, 98, 95, 99, 116, 108, 32, 114, 101, 113, 117, 101, 115, 116, 58, 32, 0, 0, 0, 0, 0, 0, 0, 0, 110, 111, 116, 105, 102, 105, 99, 97, 116, 105, 111, 110, 58, 32, 37, 115, 10, 0, 0, 0, 0, 0, 0, 0, 85, 110, 107, 110, 111, 119, 110, 32, 110, 98, 95, 109, 111, 100, 101, 95, 113, 117, 101, 114, 121, 32, 114, 101, 113, 117, 101, 115, 116, 58, 32, 0, 97, 115, 115, 101, 114, 116, 105, 111, 110, 32, 102, 97, 105, 108, 101, 100, 58, 32, 83, 85, 66, 77, 79, 68, 69, 40, 105, 110, 110, 111, 118, 97, 116, 105, 111, 110, 95, 117, 110, 113, 117, 97, 110, 116, 41, 0, 0, 0, 119, 97, 114, 110, 105, 110, 103, 58, 32, 37, 115, 10, 0, 0, 0, 0, 119, 97, 114, 110, 105, 110, 103, 58, 32, 37, 115, 10, 0, 0, 0, 0, 97, 115, 115, 101, 114, 116, 105, 111, 110, 32, 102, 97, 105, 108, 101, 100, 58, 32, 83, 85, 66, 77, 79, 68, 69, 40, 108, 116, 112, 95, 117, 110, 113, 117, 97, 110, 116, 41, 0, 0, 110, 111, 116, 105, 102, 105, 99, 97, 116, 105, 111, 110, 58, 32, 37, 115, 10, 0, 0, 0, 0, 0, 0, 0, 68, 111, 32, 110, 111, 116, 32, 111, 119, 110, 32, 105, 110, 112, 117, 116, 32, 98, 117, 102, 102, 101, 114, 58, 32, 110, 111, 116, 32, 112, 97, 99, 107, 105, 110, 103, 0, 0, 0, 0, 73, 110, 118, 97, 108, 105, 100, 32, 109, 111, 100, 101, 32, 101, 110, 99, 111, 117, 110, 116, 101, 114, 101, 100, 46, 32, 84, 104, 101, 32, 115, 116, 114, 101, 97, 109, 32, 105, 115, 32, 99, 111, 114, 114, 117, 112, 116, 101, 100, 46, 0, 0, 0, 0, 0, 0, 77, 111, 114, 101, 32, 116, 104, 97, 110, 32, 116, 119, 111, 32, 119, 105, 100, 101, 98, 97, 110, 100, 32, 108, 97, 121, 101, 114, 115, 32, 102, 111, 117, 110, 100, 46, 32, 84, 104, 101, 32, 115, 116, 114, 101, 97, 109, 32, 105, 115, 32, 99, 111, 114, 114, 117, 112, 116, 101, 100, 46, 0, 0, 0, 73, 110, 118, 97, 108, 105, 100, 32, 109, 111, 100, 101, 32, 115, 112, 101, 99, 105, 102, 105, 101, 100, 32, 105, 110, 32, 83, 112, 101, 101, 120, 32, 104, 101, 97, 100, 101, 114, 0, 0, 67, 111, 117, 108, 100, 32, 110, 111, 116, 32, 114, 101, 115, 105, 122, 101, 32, 105, 110, 112, 117, 116, 32, 98, 117, 102, 102, 101, 114, 58, 32, 110, 111, 116, 32, 112, 97, 99, 107, 105, 110, 103, 0, 0, 0, 0, 0, 0, 119, 97, 114, 110, 105, 110, 103, 58, 32, 37, 115, 32, 37, 100, 10, 0, 73, 110, 118, 97, 108, 105, 100, 32, 109, 111, 100, 101, 32, 101, 110, 99, 111, 117, 110, 116, 101, 114, 101, 100, 46, 32, 84, 104, 101, 32, 115, 116, 114, 101, 97, 109, 32, 105, 115, 32, 99, 111, 114, 114, 117, 112, 116, 101, 100, 46, 0, 0, 0, 0, 0, 0, 83, 112, 101, 101, 120, 32, 104, 101, 97, 100, 101, 114, 32, 116, 111, 111, 32, 115, 109, 97, 108, 108, 0, 0, 66, 117, 102, 102, 101, 114, 32, 116, 111, 111, 32, 115, 109, 97, 108, 108, 32, 116, 111, 32, 112, 97, 99, 107, 32, 98, 105, 116, 115, 0, 0, 0, 85, 110, 107, 110, 111, 119, 110, 32, 119, 98, 95, 109, 111, 100, 101, 95, 113, 117, 101, 114, 121, 32, 114, 101, 113, 117, 101, 115, 116, 58, 32, 0, 110, 111, 116, 105, 102, 105, 99, 97, 116, 105, 111, 110, 58, 32, 37, 115, 10, 0, 0, 0, 0, 0, 0, 0, 97, 115, 115, 101, 114, 116, 105, 111, 110, 32, 102, 97, 105, 108, 101, 100, 58, 32, 83, 85, 66, 77, 79, 68, 69, 40, 105, 110, 110, 111, 118, 97, 116, 105, 111, 110, 95, 113, 117, 97, 110, 116, 41, 0, 0, 0, 0, 0, 119, 97, 114, 110, 105, 110, 103, 58, 32, 37, 115, 32, 37, 100, 10, 0, 84, 104, 105, 115, 32, 100, 111, 101, 115, 110, 39, 116, 32, 108, 111, 111, 107, 32, 108, 105, 107, 101, 32, 97, 32, 83, 112, 101, 101, 120, 32, 102, 105, 108, 101, 0, 0, 0, 0, 0, 67, 111, 117, 108, 100, 32, 110, 111, 116, 32, 114, 101, 115, 105, 122, 101, 32, 105, 110, 112, 117, 116, 32, 98, 117, 102, 102, 101, 114, 58, 32, 116, 114, 117, 110, 99, 97, 116, 105, 110, 103, 32, 111, 118, 101, 114, 115, 105, 122, 101, 32, 105, 110, 112, 117, 116, 0, 0, 0, 0, 0, 0, 0, 0, 49, 46, 50, 114, 99, 49, 0, 0, 119, 97, 114, 110, 105, 110, 103, 58, 32, 37, 115, 32, 37, 100, 10, 0, 97, 115, 115, 101, 114, 116, 105, 111, 110, 32, 102, 97, 105, 108, 101, 100, 58, 32, 83, 85, 66, 77, 79, 68, 69, 40, 108, 116, 112, 95, 113, 117, 97, 110, 116, 41, 0, 0, 0, 0, 105, 110, 32, 117, 115, 101, 32, 98, 121, 116, 101, 115, 32, 32, 32, 32, 32, 61, 32, 37, 49, 48, 108, 117, 10, 0, 0, 0, 0, 0, 0, 0, 117, 108, 116, 114, 97, 45, 119, 105, 100, 101, 98, 97, 110, 100, 32, 40, 115, 117, 98, 45, 98, 97, 110, 100, 32, 67, 69, 76, 80, 41, 0, 0, 84, 104, 105, 115, 32, 109, 111, 100, 101, 32, 105, 115, 32, 109, 101, 97, 110, 116, 32, 116, 111, 32, 98, 101, 32, 117, 115, 101, 100, 32, 97, 108, 111, 110, 101, 0, 0, 0, 0, 0, 68, 111, 32, 110, 111, 116, 32, 111, 119, 110, 32, 105, 110, 112, 117, 116, 32, 98, 117, 102, 102, 101, 114, 58, 32, 116, 114, 117, 110, 99, 97, 116, 105, 110, 103, 32, 111, 118, 101, 114, 115, 105, 122, 101, 32, 105, 110, 112, 117, 116, 0, 0, 0, 0, 0, 0, 85, 110, 107, 110, 111, 119, 110, 32, 110, 98, 95, 99, 116, 108, 32, 114, 101, 113, 117, 101, 115, 116, 58, 32, 0, 0, 0, 0, 0, 0, 0, 0, 97, 115, 115, 101, 114, 116, 105, 111, 110, 32, 102, 97, 105, 108, 101, 100, 58, 32, 115, 116, 45, 62, 119, 105, 110, 100, 111, 119, 83, 105, 122, 101, 45, 115, 116, 45, 62, 102, 114, 97, 109, 101, 83, 105, 122, 101, 32, 61, 61, 32, 115, 116, 45, 62, 115, 117, 98, 102, 114, 97, 109, 101, 83, 105, 122, 101, 0, 0, 0, 0, 0, 0, 109, 97, 120, 32, 115, 121, 115, 116, 101, 109, 32, 98, 121, 116, 101, 115, 32, 61, 32, 37, 49, 48, 108, 117, 10, 0, 0, 0, 0, 0, 0, 0, 110, 98, 95, 99, 101, 108, 112, 46, 99, 0, 0, 0, 0, 0, 0, 0, 115, 121, 115, 116, 101, 109, 32, 98, 121, 116, 101, 115, 32, 32, 32, 32, 32, 61, 32, 37, 49, 48, 108, 117, 10, 0, 0, 0, 0, 0, 0, 0, 85, 110, 107, 110, 111, 119, 110, 32, 119, 98, 95, 109, 111, 100, 101, 95, 113, 117, 101, 114, 121, 32, 114, 101, 113, 117, 101, 115, 116, 58, 32, 0, 70, 97, 116, 97, 108, 32, 40, 105, 110, 116, 101, 114, 110, 97, 108, 41, 32, 101, 114, 114, 111, 114, 32, 105, 110, 32, 37, 115, 44, 32, 108, 105, 110, 101, 32, 37, 100, 58, 32, 37, 115, 10, 0, 0, 0, 0, 0, 0, 110, 111, 116, 105, 102, 105, 99, 97, 116, 105, 111, 110, 58, 32, 37, 115, 10, 0, 0, 0, 0, 0, 0, 0, 83, 112, 101, 101, 120, 32, 32, 32, 0, 0, 0, 0, 0, 0, 0, 0, 119, 105, 100, 101, 98, 97, 110, 100, 32, 40, 115, 117, 98, 45, 98, 97, 110, 100, 32, 67, 69, 76, 80, 41, 0, 0, 0, 0, 0, 0, 0, 0, 67, 111, 117, 108, 100, 32, 110, 111, 116, 32, 114, 101, 115, 105, 122, 101, 32, 105, 110, 112, 117, 116, 32, 98, 117, 102, 102, 101, 114, 58, 32, 116, 114, 117, 110, 99, 97, 116, 105, 110, 103, 32, 105, 110, 112, 117, 116, 0, 80, 97, 99, 107, 101, 116, 32, 105, 115, 32, 108, 97, 114, 103, 101, 114, 32, 116, 104, 97, 110, 32, 97, 108, 108, 111, 99, 97, 116, 101, 100, 32, 98, 117, 102, 102, 101, 114, 0, 0]), "i8", ALLOC_NONE, Runtime.GLOBAL_BASE);
        var tempDoublePtr = Runtime.alignMemory(allocate(12, "i8", ALLOC_STATIC), 8);
        function copyTempFloat(e) {
          HEAP8[tempDoublePtr] = HEAP8[e],
            HEAP8[tempDoublePtr + 1] = HEAP8[e + 1],
            HEAP8[tempDoublePtr + 2] = HEAP8[e + 2],
            HEAP8[tempDoublePtr + 3] = HEAP8[e + 3]
        }
        function copyTempDouble(e) {
          HEAP8[tempDoublePtr] = HEAP8[e],
            HEAP8[tempDoublePtr + 1] = HEAP8[e + 1],
            HEAP8[tempDoublePtr + 2] = HEAP8[e + 2],
            HEAP8[tempDoublePtr + 3] = HEAP8[e + 3],
            HEAP8[tempDoublePtr + 4] = HEAP8[e + 4],
            HEAP8[tempDoublePtr + 5] = HEAP8[e + 5],
            HEAP8[tempDoublePtr + 6] = HEAP8[e + 6],
            HEAP8[tempDoublePtr + 7] = HEAP8[e + 7]
        }
        assert(tempDoublePtr % 8 == 0),
          Module._memcpy = _memcpy,
          Module._memmove = _memmove;
        var _llvm_memmove_p0i8_p0i8_i32 = _memmove,
          ERRNO_CODES = {
            EPERM: 1,
            ENOENT: 2,
            ESRCH: 3,
            EINTR: 4,
            EIO: 5,
            ENXIO: 6,
            E2BIG: 7,
            ENOEXEC: 8,
            EBADF: 9,
            ECHILD: 10,
            EAGAIN: 11,
            EWOULDBLOCK: 11,
            ENOMEM: 12,
            EACCES: 13,
            EFAULT: 14,
            ENOTBLK: 15,
            EBUSY: 16,
            EEXIST: 17,
            EXDEV: 18,
            ENODEV: 19,
            ENOTDIR: 20,
            EISDIR: 21,
            EINVAL: 22,
            ENFILE: 23,
            EMFILE: 24,
            ENOTTY: 25,
            ETXTBSY: 26,
            EFBIG: 27,
            ENOSPC: 28,
            ESPIPE: 29,
            EROFS: 30,
            EMLINK: 31,
            EPIPE: 32,
            EDOM: 33,
            ERANGE: 34,
            ENOMSG: 42,
            EIDRM: 43,
            ECHRNG: 44,
            EL2NSYNC: 45,
            EL3HLT: 46,
            EL3RST: 47,
            ELNRNG: 48,
            EUNATCH: 49,
            ENOCSI: 50,
            EL2HLT: 51,
            EDEADLK: 35,
            ENOLCK: 37,
            EBADE: 52,
            EBADR: 53,
            EXFULL: 54,
            ENOANO: 55,
            EBADRQC: 56,
            EBADSLT: 57,
            EDEADLOCK: 35,
            EBFONT: 59,
            ENOSTR: 60,
            ENODATA: 61,
            ETIME: 62,
            ENOSR: 63,
            ENONET: 64,
            ENOPKG: 65,
            EREMOTE: 66,
            ENOLINK: 67,
            EADV: 68,
            ESRMNT: 69,
            ECOMM: 70,
            EPROTO: 71,
            EMULTIHOP: 72,
            EDOTDOT: 73,
            EBADMSG: 74,
            ENOTUNIQ: 76,
            EBADFD: 77,
            EREMCHG: 78,
            ELIBACC: 79,
            ELIBBAD: 80,
            ELIBSCN: 81,
            ELIBMAX: 82,
            ELIBEXEC: 83,
            ENOSYS: 38,
            ENOTEMPTY: 39,
            ENAMETOOLONG: 36,
            ELOOP: 40,
            EOPNOTSUPP: 95,
            EPFNOSUPPORT: 96,
            ECONNRESET: 104,
            ENOBUFS: 105,
            EAFNOSUPPORT: 97,
            EPROTOTYPE: 91,
            ENOTSOCK: 88,
            ENOPROTOOPT: 92,
            ESHUTDOWN: 108,
            ECONNREFUSED: 111,
            EADDRINUSE: 98,
            ECONNABORTED: 103,
            ENETUNREACH: 101,
            ENETDOWN: 100,
            ETIMEDOUT: 110,
            EHOSTDOWN: 112,
            EHOSTUNREACH: 113,
            EINPROGRESS: 115,
            EALREADY: 114,
            EDESTADDRREQ: 89,
            EMSGSIZE: 90,
            EPROTONOSUPPORT: 93,
            ESOCKTNOSUPPORT: 94,
            EADDRNOTAVAIL: 99,
            ENETRESET: 102,
            EISCONN: 106,
            ENOTCONN: 107,
            ETOOMANYREFS: 109,
            EUSERS: 87,
            EDQUOT: 122,
            ESTALE: 116,
            ENOTSUP: 95,
            ENOMEDIUM: 123,
            EILSEQ: 84,
            EOVERFLOW: 75,
            ECANCELED: 125,
            ENOTRECOVERABLE: 131,
            EOWNERDEAD: 130,
            ESTRPIPE: 86
          },
          ERRNO_MESSAGES = {
            0: "Success",
            1: "Not super-user",
            2: "No such file or directory",
            3: "No such process",
            4: "Interrupted system call",
            5: "I/O error",
            6: "No such device or address",
            7: "Arg list too long",
            8: "Exec format error",
            9: "Bad file number",
            10: "No children",
            11: "No more processes",
            12: "Not enough core",
            13: "Permission denied",
            14: "Bad address",
            15: "Block device required",
            16: "Mount device busy",
            17: "File exists",
            18: "Cross-device link",
            19: "No such device",
            20: "Not a directory",
            21: "Is a directory",
            22: "Invalid argument",
            23: "Too many open files in system",
            24: "Too many open files",
            25: "Not a typewriter",
            26: "Text file busy",
            27: "File too large",
            28: "No space left on device",
            29: "Illegal seek",
            30: "Read only file system",
            31: "Too many links",
            32: "Broken pipe",
            33: "Math arg out of domain of func",
            34: "Math result not representable",
            35: "File locking deadlock error",
            36: "File or path name too long",
            37: "No record locks available",
            38: "Function not implemented",
            39: "Directory not empty",
            40: "Too many symbolic links",
            42: "No message of desired type",
            43: "Identifier removed",
            44: "Channel number out of range",
            45: "Level 2 not synchronized",
            46: "Level 3 halted",
            47: "Level 3 reset",
            48: "Link number out of range",
            49: "Protocol driver not attached",
            50: "No CSI structure available",
            51: "Level 2 halted",
            52: "Invalid exchange",
            53: "Invalid request descriptor",
            54: "Exchange full",
            55: "No anode",
            56: "Invalid request code",
            57: "Invalid slot",
            59: "Bad font file fmt",
            60: "Device not a stream",
            61: "No data (for no delay io)",
            62: "Timer expired",
            63: "Out of streams resources",
            64: "Machine is not on the network",
            65: "Package not installed",
            66: "The object is remote",
            67: "The link has been severed",
            68: "Advertise error",
            69: "Srmount error",
            70: "Communication error on send",
            71: "Protocol error",
            72: "Multihop attempted",
            73: "Cross mount point (not really error)",
            74: "Trying to read unreadable message",
            75: "Value too large for defined data type",
            76: "Given log. name not unique",
            77: "f.d. invalid for this operation",
            78: "Remote address changed",
            79: "Can   access a needed shared lib",
            80: "Accessing a corrupted shared lib",
            81: ".lib section in a.out corrupted",
            82: "Attempting to link in too many libs",
            83: "Attempting to exec a shared library",
            84: "Illegal byte sequence",
            86: "Streams pipe error",
            87: "Too many users",
            88: "Socket operation on non-socket",
            89: "Destination address required",
            90: "Message too long",
            91: "Protocol wrong type for socket",
            92: "Protocol not available",
            93: "Unknown protocol",
            94: "Socket type not supported",
            95: "Not supported",
            96: "Protocol family not supported",
            97: "Address family not supported by protocol family",
            98: "Address already in use",
            99: "Address not available",
            100: "Network interface is not configured",
            101: "Network is unreachable",
            102: "Connection reset by network",
            103: "Connection aborted",
            104: "Connection reset by peer",
            105: "No buffer space available",
            106: "Socket is already connected",
            107: "Socket is not connected",
            108: "Can't send after socket shutdown",
            109: "Too many references",
            110: "Connection timed out",
            111: "Connection refused",
            112: "Host is down",
            113: "Host is unreachable",
            114: "Socket already connected",
            115: "Connection already in progress",
            116: "Stale file handle",
            122: "Quota exceeded",
            123: "No medium (in tape drive)",
            125: "Operation canceled",
            130: "Previous owner died",
            131: "State not recoverable"
          },
          ___errno_state = 0;
        function ___setErrNo(e) {
          return HEAP32[___errno_state >> 2] = e,
            e
        }
        var PATH = {
          splitPath: function (e) {
            return /^(\/?|)([\s\S]*?)((?:\.{1,2}|[^\/]+?|)(\.[^.\/]*|))(?:[\/]*)$/.exec(e).slice(1)
          },
          normalizeArray: function (e, r) {
            for (var t = 0,
              n = e.length - 1; n >= 0; n--) {
              var i = e[n];
              "." === i ? e.splice(n, 1) : ".." === i ? (e.splice(n, 1), t++) : t && (e.splice(n, 1), t--)
            }
            if (r) for (; t--; t) e.unshift("..");
            return e
          },
          normalize: function (e) {
            var r = "/" === e.charAt(0),
              t = "/" === e.substr(- 1);
            return (e = PATH.normalizeArray(e.split("/").filter(function (e) {
              return !!e
            }), !r).join("/")) || r || (e = "."),
              e && t && (e += "/"),
              (r ? "/" : "") + e
          },
          dirname: function (e) {
            var r = PATH.splitPath(e),
              t = r[0],
              n = r[1];
            return t || n ? (n && (n = n.substr(0, n.length - 1)), t + n) : "."
          },
          basename: function (e) {
            if ("/" === e) return "/";
            var r = e.lastIndexOf("/");
            return - 1 === r ? e : e.substr(r + 1)
          },
          extname: function (e) {
            return PATH.splitPath(e)[3]
          },
          join: function () {
            var e = Array.prototype.slice.call(arguments, 0);
            return PATH.normalize(e.join("/"))
          },
          join2: function (e, r) {
            return PATH.normalize(e + "/" + r)
          },
          resolve: function () {
            for (var e = "",
              r = !1,
              t = arguments.length - 1; t >= -1 && !r; t--) {
              var n = t >= 0 ? arguments[t] : FS.cwd();
              if ("string" != typeof n) throw new TypeError("Arguments to path.resolve must be strings");
              n && (e = n + "/" + e, r = "/" === n.charAt(0))
            }
            return e = PATH.normalizeArray(e.split("/").filter(function (e) {
              return !!e
            }), !r).join("/"),
              (r ? "/" : "") + e || "."
          },
          relative: function (e, r) {
            function t(e) {
              for (var r = 0; r < e.length && "" === e[r]; r++);
              for (var t = e.length - 1; t >= 0 && "" === e[t]; t--);
              return r > t ? [] : e.slice(r, t - r + 1)
            }
            e = PATH.resolve(e).substr(1),
              r = PATH.resolve(r).substr(1);
            for (var n = t(e.split("/")), i = t(r.split("/")), o = Math.min(n.length, i.length), a = o, s = 0; s < o; s++) if (n[s] !== i[s]) {
              a = s;
              break
            }
            var l = [];
            for (s = a; s < n.length; s++) l.push("..");
            return (l = l.concat(i.slice(a))).join("/")
          }
        },
          TTY = {
            ttys: [],
            init: function () { },
            shutdown: function () { },
            register: function (e, r) {
              TTY.ttys[e] = {
                input: [],
                output: [],
                ops: r
              },
                FS.registerDevice(e, TTY.stream_ops)
            },
            stream_ops: {
              open: function (e) {
                var r = TTY.ttys[e.node.rdev];
                if (!r) throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
                e.tty = r,
                  e.seekable = !1
              },
              close: function (e) {
                e.tty.output.length && e.tty.ops.put_char(e.tty, 10)
              },
              read: function (e, r, t, n, i) {
                if (!e.tty || !e.tty.ops.get_char) throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
                for (var o = 0,
                  a = 0; a < n; a++) {
                  var s;
                  try {
                    s = e.tty.ops.get_char(e.tty)
                  } catch (e) {
                    throw new FS.ErrnoError(ERRNO_CODES.EIO)
                  }
                  if (void 0 === s && 0 === o) throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
                  if (null === s || void 0 === s) break;
                  o++,
                    r[t + a] = s
                }
                return o && (e.node.timestamp = Date.now()),
                  o
              },
              write: function (e, r, t, n, i) {
                if (!e.tty || !e.tty.ops.put_char) throw new FS.ErrnoError(ERRNO_CODES.ENXIO);
                for (var o = 0; o < n; o++) try {
                  e.tty.ops.put_char(e.tty, r[t + o])
                } catch (e) {
                  throw new FS.ErrnoError(ERRNO_CODES.EIO)
                }
                return n && (e.node.timestamp = Date.now()),
                  o
              }
            },
            default_tty_ops: {
              get_char: function (e) {
                if (!e.input.length) {
                  var r = null;
                  if (ENVIRONMENT_IS_NODE) {
                    if (!(r = process.stdin.read())) return process.stdin._readableState && process.stdin._readableState.ended ? null : void 0
                  } else "undefined" != typeof window && "function" == typeof window.prompt ? null !== (r = window.prompt("Input: ")) && (r += "\n") : "function" == typeof readline && null !== (r = readline()) && (r += "\n");
                  if (!r) return null;
                  e.input = intArrayFromString(r, !0)
                }
                return e.input.shift()
              },
              put_char: function (e, r) {
                null === r || 10 === r ? (Module.print(e.output.join("")), e.output = []) : e.output.push(TTY.utf8.processCChar(r))
              }
            },
            default_tty1_ops: {
              put_char: function (e, r) {
                null === r || 10 === r ? (Module.printErr(e.output.join("")), e.output = []) : e.output.push(TTY.utf8.processCChar(r))
              }
            }
          },
          MEMFS = {
            ops_table: null,
            CONTENT_OWNING: 1,
            CONTENT_FLEXIBLE: 2,
            CONTENT_FIXED: 3,
            mount: function (e) {
              return MEMFS.createNode(null, "/", 16895, 0)
            },
            createNode: function (e, r, t, n) {
              if (FS.isBlkdev(t) || FS.isFIFO(t)) throw new FS.ErrnoError(ERRNO_CODES.EPERM);
              MEMFS.ops_table || (MEMFS.ops_table = {
                dir: {
                  node: {
                    getattr: MEMFS.node_ops.getattr,
                    setattr: MEMFS.node_ops.setattr,
                    lookup: MEMFS.node_ops.lookup,
                    mknod: MEMFS.node_ops.mknod,
                    mknod: MEMFS.node_ops.mknod,
                    rename: MEMFS.node_ops.rename,
                    unlink: MEMFS.node_ops.unlink,
                    rmdir: MEMFS.node_ops.rmdir,
                    readdir: MEMFS.node_ops.readdir,
                    symlink: MEMFS.node_ops.symlink
                  },
                  stream: {
                    llseek: MEMFS.stream_ops.llseek
                  }
                },
                file: {
                  node: {
                    getattr: MEMFS.node_ops.getattr,
                    setattr: MEMFS.node_ops.setattr
                  },
                  stream: {
                    llseek: MEMFS.stream_ops.llseek,
                    read: MEMFS.stream_ops.read,
                    write: MEMFS.stream_ops.write,
                    allocate: MEMFS.stream_ops.allocate,
                    mmap: MEMFS.stream_ops.mmap
                  }
                },
                link: {
                  node: {
                    getattr: MEMFS.node_ops.getattr,
                    setattr: MEMFS.node_ops.setattr,
                    readlink: MEMFS.node_ops.readlink
                  },
                  stream: {}
                },
                chrdev: {
                  node: {
                    getattr: MEMFS.node_ops.getattr,
                    setattr: MEMFS.node_ops.setattr
                  },
                  stream: FS.chrdev_stream_ops
                }
              });
              var i = FS.createNode(e, r, t, n);
              return FS.isDir(i.mode) ? (i.node_ops = MEMFS.ops_table.dir.node, i.stream_ops = MEMFS.ops_table.dir.stream, i.contents = {}) : FS.isFile(i.mode) ? (i.node_ops = MEMFS.ops_table.file.node, i.stream_ops = MEMFS.ops_table.file.stream, i.contents = [], i.contentMode = MEMFS.CONTENT_FLEXIBLE) : FS.isLink(i.mode) ? (i.node_ops = MEMFS.ops_table.link.node, i.stream_ops = MEMFS.ops_table.link.stream) : FS.isChrdev(i.mode) && (i.node_ops = MEMFS.ops_table.chrdev.node, i.stream_ops = MEMFS.ops_table.chrdev.stream),
                i.timestamp = Date.now(),
                e && (e.contents[r] = i),
                i
            },
            ensureFlexible: function (e) {
              if (e.contentMode !== MEMFS.CONTENT_FLEXIBLE) {
                var r = e.contents;
                e.contents = Array.prototype.slice.call(r),
                  e.contentMode = MEMFS.CONTENT_FLEXIBLE
              }
            },
            node_ops: {
              getattr: function (e) {
                var r = {};
                return r.dev = FS.isChrdev(e.mode) ? e.id : 1,
                  r.ino = e.id,
                  r.mode = e.mode,
                  r.nlink = 1,
                  r.uid = 0,
                  r.gid = 0,
                  r.rdev = e.rdev,
                  FS.isDir(e.mode) ? r.size = 4096 : FS.isFile(e.mode) ? r.size = e.contents.length : FS.isLink(e.mode) ? r.size = e.link.length : r.size = 0,
                  r.atime = new Date(e.timestamp),
                  r.mtime = new Date(e.timestamp),
                  r.ctime = new Date(e.timestamp),
                  r.blksize = 4096,
                  r.blocks = Math.ceil(r.size / r.blksize),
                  r
              },
              setattr: function (e, r) {
                if (void 0 !== r.mode && (e.mode = r.mode), void 0 !== r.timestamp && (e.timestamp = r.timestamp), void 0 !== r.size) {
                  MEMFS.ensureFlexible(e);
                  var t = e.contents;
                  if (r.size < t.length) t.length = r.size;
                  else for (; r.size > t.length;) t.push(0)
                }
              },
              lookup: function (e, r) {
                throw FS.genericErrors[ERRNO_CODES.ENOENT]
              },
              mknod: function (e, r, t, n) {
                return MEMFS.createNode(e, r, t, n)
              },
              rename: function (e, r, t) {
                if (FS.isDir(e.mode)) {
                  var n;
                  try {
                    n = FS.lookupNode(r, t)
                  } catch (e) { }
                  if (n) for (var i in n.contents) throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY)
                }
                delete e.parent.contents[e.name],
                  e.name = t,
                  r.contents[t] = e,
                  e.parent = r
              },
              unlink: function (e, r) {
                delete e.contents[r]
              },
              rmdir: function (e, r) {
                var t = FS.lookupNode(e, r);
                for (var n in t.contents) throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
                delete e.contents[r]
              },
              readdir: function (e) {
                var r = [".", ".."];
                for (var t in e.contents) e.contents.hasOwnProperty(t) && r.push(t);
                return r
              },
              symlink: function (e, r, t) {
                var n = MEMFS.createNode(e, r, 41471, 0);
                return n.link = t,
                  n
              },
              readlink: function (e) {
                if (!FS.isLink(e.mode)) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
                return e.link
              }
            },
            stream_ops: {
              read: function (e, r, t, n, i) {
                var o = e.node.contents;
                if (i >= o.length) return 0;
                var a = Math.min(o.length - i, n);
                if (assert(a >= 0), a > 8 && o.subarray) r.set(o.subarray(i, i + a), t);
                else for (var s = 0; s < a; s++) r[t + s] = o[i + s];
                return a
              },
              write: function (e, r, t, n, i, o) {
                var a = e.node;
                a.timestamp = Date.now();
                var s = a.contents;
                if (n && 0 === s.length && 0 === i && r.subarray) return o && 0 === t ? (a.contents = r, a.contentMode = r.buffer === HEAP8.buffer ? MEMFS.CONTENT_OWNING : MEMFS.CONTENT_FIXED) : (a.contents = new Uint8Array(r.subarray(t, t + n)), a.contentMode = MEMFS.CONTENT_FIXED),
                  n;
                MEMFS.ensureFlexible(a);
                for (s = a.contents; s.length < i;) s.push(0);
                for (var l = 0; l < n; l++) s[i + l] = r[t + l];
                return n
              },
              llseek: function (e, r, t) {
                var n = r;
                if (1 === t ? n += e.position : 2 === t && FS.isFile(e.node.mode) && (n += e.node.contents.length), n < 0) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
                return e.ungotten = [],
                  e.position = n,
                  n
              },
              allocate: function (e, r, t) {
                MEMFS.ensureFlexible(e.node);
                for (var n = e.node.contents,
                  i = r + t; i > n.length;) n.push(0)
              },
              mmap: function (e, r, t, n, i, o, a) {
                if (!FS.isFile(e.node.mode)) throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
                var s, l, u = e.node.contents;
                if (2 & a || u.buffer !== r && u.buffer !== r.buffer) {
                  if ((i > 0 || i + n < u.length) && (u = u.subarray ? u.subarray(i, i + n) : Array.prototype.slice.call(u, i, i + n)), l = !0, !(s = _malloc(n))) throw new FS.ErrnoError(ERRNO_CODES.ENOMEM);
                  r.set(u, s)
                } else l = !1,
                  s = u.byteOffset;
                return {
                  ptr: s,
                  allocated: l
                }
              }
            }
          },
          IDBFS = {
            dbs: {},
            indexedDB: function () {
              return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB
            },
            DB_VERSION: 20,
            DB_STORE_NAME: "FILE_DATA",
            mount: function (e) {
              return MEMFS.mount.apply(null, arguments)
            },
            syncfs: function (e, r, t) {
              IDBFS.getLocalSet(e,
                function (n, i) {
                  if (n) return t(n);
                  IDBFS.getRemoteSet(e,
                    function (e, n) {
                      if (e) return t(e);
                      var o = r ? n : i,
                        a = r ? i : n;
                      IDBFS.reconcile(o, a, t)
                    })
                })
            },
            reconcile: function (e, r, t) {
              var n = 0,
                i = {};
              for (var o in e.files) if (e.files.hasOwnProperty(o)) {
                var a = e.files[o]; (!(l = r.files[o]) || a.timestamp > l.timestamp) && (i[o] = a, n++)
              }
              var s = {};
              for (var o in r.files) if (r.files.hasOwnProperty(o)) {
                var l;
                a = r.files[o]; (l = e.files[o]) || (s[o] = a, n++)
              }
              if (!n) return t(null);
              var u = 0;
              function c(e) {
                return e ? t(e) : ++u >= n ? t(null) : void 0
              }
              var f = ("remote" === e.type ? e.db : r.db).transaction([IDBFS.DB_STORE_NAME], "readwrite");
              f.onerror = function () {
                t(this.error)
              };
              var d = f.objectStore(IDBFS.DB_STORE_NAME);
              for (var _ in i) if (i.hasOwnProperty(_)) {
                var h = i[_];
                if ("local" === r.type) try {
                  if (FS.isDir(h.mode)) FS.mkdir(_, h.mode);
                  else if (FS.isFile(h.mode)) {
                    var p = FS.open(_, "w+", 511);
                    FS.write(p, h.contents, 0, h.contents.length, 0, !0),
                      FS.close(p)
                  }
                  c(null)
                } catch (a) {
                  return c(a)
                } else (m = d.put(h, _)).onsuccess = function () {
                  c(null)
                },
                  m.onerror = function () {
                    c(this.error)
                  }
              }
              for (var _ in s) if (s.hasOwnProperty(_)) {
                var m;
                h = s[_];
                if ("local" === r.type) try {
                  FS.isDir(h.mode) ? FS.rmdir(_) : FS.isFile(h.mode) && FS.unlink(_),
                    c(null)
                } catch (a) {
                  return c(a)
                } else (m = d.delete(_)).onsuccess = function () {
                  c(null)
                },
                  m.onerror = function () {
                    c(this.error)
                  }
              }
            },
            getLocalSet: function (e, r) {
              var t = {};
              function n(e) {
                return "." !== e && ".." !== e
              }
              function i(e) {
                return function (r) {
                  return PATH.join2(e, r)
                }
              }
              for (var o = FS.readdir(e.mountpoint).filter(n).map(i(e.mountpoint)); o.length;) {
                var a, s, l = o.pop();
                try {
                  s = FS.lookupPath(l).node,
                    a = FS.stat(l)
                } catch (e) {
                  return r(e)
                }
                if (FS.isDir(a.mode)) o.push.apply(o, FS.readdir(l).filter(n).map(i(l))),
                  t[l] = {
                    mode: a.mode,
                    timestamp: a.mtime
                  };
                else {
                  if (!FS.isFile(a.mode)) return r(new Error("node type not supported"));
                  t[l] = {
                    contents: s.contents,
                    mode: a.mode,
                    timestamp: a.mtime
                  }
                }
              }
              return r(null, {
                type: "local",
                files: t
              })
            },
            getDB: function (e, r) {
              var t, n = IDBFS.dbs[e];
              if (n) return r(null, n);
              try {
                t = IDBFS.indexedDB().open(e, IDBFS.DB_VERSION)
              } catch (e) {
                return onerror(e)
              }
              t.onupgradeneeded = function () {
                (n = t.result).createObjectStore(IDBFS.DB_STORE_NAME)
              },
                t.onsuccess = function () {
                  n = t.result,
                    IDBFS.dbs[e] = n,
                    r(null, n)
                },
                t.onerror = function () {
                  r(this.error)
                }
            },
            getRemoteSet: function (e, r) {
              var t = {};
              IDBFS.getDB(e.mountpoint,
                function (e, n) {
                  if (e) return r(e);
                  var i = n.transaction([IDBFS.DB_STORE_NAME], "readonly");
                  i.onerror = function () {
                    r(this.error)
                  },
                    i.objectStore(IDBFS.DB_STORE_NAME).openCursor().onsuccess = function (e) {
                      var i = e.target.result;
                      if (!i) return r(null, {
                        type: "remote",
                        db: n,
                        files: t
                      });
                      t[i.key] = i.value,
                        i.
                          continue()
                    }
                })
            }
          },
          NODEFS = {
            isWindows: !1,
            staticInit: function () {
              NODEFS.isWindows = !!process.platform.match(/^win/)
            },
            mount: function (e) {
              return assert(ENVIRONMENT_IS_NODE),
                NODEFS.createNode(null, "/", NODEFS.getMode(e.opts.root), 0)
            },
            createNode: function (e, r, t, n) {
              if (!FS.isDir(t) && !FS.isFile(t) && !FS.isLink(t)) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
              var i = FS.createNode(e, r, t);
              return i.node_ops = NODEFS.node_ops,
                i.stream_ops = NODEFS.stream_ops,
                i
            },
            getMode: function (e) {
              var r;
              try {
                r = fs.lstatSync(e),
                  NODEFS.isWindows && (r.mode = r.mode | (146 & r.mode) >> 1)
              } catch (e) {
                if (!e.code) throw e;
                throw new FS.ErrnoError(ERRNO_CODES[e.code])
              }
              return r.mode
            },
            realPath: function (e) {
              for (var r = []; e.parent !== e;) r.push(e.name),
                e = e.parent;
              return r.push(e.mount.opts.root),
                r.reverse(),
                PATH.join.apply(null, r)
            },
            flagsToPermissionStringMap: {
              0: "r",
              1: "r+",
              2: "r+",
              64: "r",
              65: "r+",
              66: "r+",
              129: "rx+",
              193: "rx+",
              514: "w+",
              577: "w",
              578: "w+",
              705: "wx",
              706: "wx+",
              1024: "a",
              1025: "a",
              1026: "a+",
              1089: "a",
              1090: "a+",
              1153: "ax",
              1154: "ax+",
              1217: "ax",
              1218: "ax+",
              4096: "rs",
              4098: "rs+"
            },
            flagsToPermissionString: function (e) {
              return e in NODEFS.flagsToPermissionStringMap ? NODEFS.flagsToPermissionStringMap[e] : e
            },
            node_ops: {
              getattr: function (e) {
                var r, t = NODEFS.realPath(e);
                try {
                  r = fs.lstatSync(t)
                } catch (e) {
                  if (!e.code) throw e;
                  throw new FS.ErrnoError(ERRNO_CODES[e.code])
                }
                return NODEFS.isWindows && !r.blksize && (r.blksize = 4096),
                  NODEFS.isWindows && !r.blocks && (r.blocks = (r.size + r.blksize - 1) / r.blksize | 0),
                {
                  dev: r.dev,
                  ino: r.ino,
                  mode: r.mode,
                  nlink: r.nlink,
                  uid: r.uid,
                  gid: r.gid,
                  rdev: r.rdev,
                  size: r.size,
                  atime: r.atime,
                  mtime: r.mtime,
                  ctime: r.ctime,
                  blksize: r.blksize,
                  blocks: r.blocks
                }
              },
              setattr: function (e, r) {
                var t = NODEFS.realPath(e);
                try {
                  if (void 0 !== r.mode && (fs.chmodSync(t, r.mode), e.mode = r.mode), void 0 !== r.timestamp) {
                    var n = new Date(r.timestamp);
                    fs.utimesSync(t, n, n)
                  }
                  void 0 !== r.size && fs.truncateSync(t, r.size)
                } catch (e) {
                  if (!e.code) throw e;
                  throw new FS.ErrnoError(ERRNO_CODES[e.code])
                }
              },
              lookup: function (e, r) {
                var t = PATH.join2(NODEFS.realPath(e), r),
                  n = NODEFS.getMode(t);
                return NODEFS.createNode(e, r, n)
              },
              mknod: function (e, r, t, n) {
                var i = NODEFS.createNode(e, r, t, n),
                  o = NODEFS.realPath(i);
                try {
                  FS.isDir(i.mode) ? fs.mkdirSync(o, i.mode) : fs.writeFileSync(o, "", {
                    mode: i.mode
                  })
                } catch (e) {
                  if (!e.code) throw e;
                  throw new FS.ErrnoError(ERRNO_CODES[e.code])
                }
                return i
              },
              rename: function (e, r, t) {
                var n = NODEFS.realPath(e),
                  i = PATH.join2(NODEFS.realPath(r), t);
                try {
                  fs.renameSync(n, i)
                } catch (e) {
                  if (!e.code) throw e;
                  throw new FS.ErrnoError(ERRNO_CODES[e.code])
                }
              },
              unlink: function (e, r) {
                var t = PATH.join2(NODEFS.realPath(e), r);
                try {
                  fs.unlinkSync(t)
                } catch (e) {
                  if (!e.code) throw e;
                  throw new FS.ErrnoError(ERRNO_CODES[e.code])
                }
              },
              rmdir: function (e, r) {
                var t = PATH.join2(NODEFS.realPath(e), r);
                try {
                  fs.rmdirSync(t)
                } catch (e) {
                  if (!e.code) throw e;
                  throw new FS.ErrnoError(ERRNO_CODES[e.code])
                }
              },
              readdir: function (e) {
                var r = NODEFS.realPath(e);
                try {
                  return fs.readdirSync(r)
                } catch (e) {
                  if (!e.code) throw e;
                  throw new FS.ErrnoError(ERRNO_CODES[e.code])
                }
              },
              symlink: function (e, r, t) {
                var n = PATH.join2(NODEFS.realPath(e), r);
                try {
                  fs.symlinkSync(t, n)
                } catch (e) {
                  if (!e.code) throw e;
                  throw new FS.ErrnoError(ERRNO_CODES[e.code])
                }
              },
              readlink: function (e) {
                var r = NODEFS.realPath(e);
                try {
                  return fs.readlinkSync(r)
                } catch (e) {
                  if (!e.code) throw e;
                  throw new FS.ErrnoError(ERRNO_CODES[e.code])
                }
              }
            },
            stream_ops: {
              open: function (e) {
                var r = NODEFS.realPath(e.node);
                try {
                  FS.isFile(e.node.mode) && (e.nfd = fs.openSync(r, NODEFS.flagsToPermissionString(e.flags)))
                } catch (e) {
                  if (!e.code) throw e;
                  throw new FS.ErrnoError(ERRNO_CODES[e.code])
                }
              },
              close: function (e) {
                try {
                  FS.isFile(e.node.mode) && e.nfd && fs.closeSync(e.nfd)
                } catch (e) {
                  if (!e.code) throw e;
                  throw new FS.ErrnoError(ERRNO_CODES[e.code])
                }
              },
              read: function (e, r, t, n, i) {
                var o, a = new Buffer(n);
                try {
                  o = fs.readSync(e.nfd, a, 0, n, i)
                } catch (e) {
                  throw new FS.ErrnoError(ERRNO_CODES[e.code])
                }
                if (o > 0) for (var s = 0; s < o; s++) r[t + s] = a[s];
                return o
              },
              write: function (e, r, t, n, i) {
                var o, a = new Buffer(r.subarray(t, t + n));
                try {
                  o = fs.writeSync(e.nfd, a, 0, n, i)
                } catch (e) {
                  throw new FS.ErrnoError(ERRNO_CODES[e.code])
                }
                return o
              },
              llseek: function (e, r, t) {
                var n = r;
                if (1 === t) n += e.position;
                else if (2 === t && FS.isFile(e.node.mode)) try {
                  n += fs.fstatSync(e.nfd).size
                } catch (e) {
                  throw new FS.ErrnoError(ERRNO_CODES[e.code])
                }
                if (n < 0) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
                return e.position = n,
                  n
              }
            }
          },
          _stdin = allocate(1, "i32*", ALLOC_STATIC),
          _stdout = allocate(1, "i32*", ALLOC_STATIC),
          _stderr = allocate(1, "i32*", ALLOC_STATIC);
        function _fflush(e) { }
        var FS = {
          root: null,
          mounts: [],
          devices: [null],
          streams: [null],
          nextInode: 1,
          nameTable: null,
          currentPath: "/",
          initialized: !1,
          ignorePermissions: !0,
          ErrnoError: null,
          genericErrors: {},
          handleFSError: function (e) {
            if (!(e instanceof FS.ErrnoError)) throw e + " : " + stackTrace();
            return ___setErrNo(e.errno)
          },
          lookupPath: function (e, r) {
            if (e = PATH.resolve(FS.cwd(), e), (r = r || {
              recurse_count: 0
            }).recurse_count > 8) throw new FS.ErrnoError(ERRNO_CODES.ELOOP);
            for (var t = PATH.normalizeArray(e.split("/").filter(function (e) {
              return !!e
            }), !1), n = FS.root, i = "/", o = 0; o < t.length; o++) {
              var a = o === t.length - 1;
              if (a && r.parent) break;
              if (n = FS.lookupNode(n, t[o]), i = PATH.join2(i, t[o]), FS.isMountpoint(n) && (n = n.mount.root), !a || r.follow) for (var s = 0; FS.isLink(n.mode);) {
                var l = FS.readlink(i);
                if (i = PATH.resolve(PATH.dirname(i), l), n = FS.lookupPath(i, {
                  recurse_count: r.recurse_count
                }).node, s++ > 40) throw new FS.ErrnoError(ERRNO_CODES.ELOOP)
              }
            }
            return {
              path: i,
              node: n
            }
          },
          getPath: function (e) {
            for (var r; ;) {
              if (FS.isRoot(e)) {
                var t = e.mount.mountpoint;
                return r ? "/" !== t[t.length - 1] ? t + "/" + r : t + r : t
              }
              r = r ? e.name + "/" + r : e.name,
                e = e.parent
            }
          },
          hashName: function (e, r) {
            for (var t = 0,
              n = 0; n < r.length; n++) t = (t << 5) - t + r.charCodeAt(n) | 0;
            return (e + t >>> 0) % FS.nameTable.length
          },
          hashAddNode: function (e) {
            var r = FS.hashName(e.parent.id, e.name);
            e.name_next = FS.nameTable[r],
              FS.nameTable[r] = e
          },
          hashRemoveNode: function (e) {
            var r = FS.hashName(e.parent.id, e.name);
            if (FS.nameTable[r] === e) FS.nameTable[r] = e.name_next;
            else for (var t = FS.nameTable[r]; t;) {
              if (t.name_next === e) {
                t.name_next = e.name_next;
                break
              }
              t = t.name_next
            }
          },
          lookupNode: function (e, r) {
            var t = FS.mayLookup(e);
            if (t) throw new FS.ErrnoError(t);
            for (var n = FS.hashName(e.id, r), i = FS.nameTable[n]; i; i = i.name_next) {
              var o = i.name;
              if (i.parent.id === e.id && o === r) return i
            }
            return FS.lookup(e, r)
          },
          createNode: function (e, r, t, n) {
            if (!FS.FSNode) {
              FS.FSNode = function (e, r, t, n) {
                this.id = FS.nextInode++,
                  this.name = r,
                  this.mode = t,
                  this.node_ops = {},
                  this.stream_ops = {},
                  this.rdev = n,
                  this.parent = null,
                  this.mount = null,
                  e || (e = this),
                  this.parent = e,
                  this.mount = e.mount,
                  FS.hashAddNode(this)
              };
              FS.FSNode.prototype = {},
                Object.defineProperties(FS.FSNode.prototype, {
                  read: {
                    get: function () {
                      return 365 == (365 & this.mode)
                    },
                    set: function (e) {
                      e ? this.mode |= 365 : this.mode &= -366
                    }
                  },
                  write: {
                    get: function () {
                      return 146 == (146 & this.mode)
                    },
                    set: function (e) {
                      e ? this.mode |= 146 : this.mode &= -147
                    }
                  },
                  isFolder: {
                    get: function () {
                      return FS.isDir(this.mode)
                    }
                  },
                  isDevice: {
                    get: function () {
                      return FS.isChrdev(this.mode)
                    }
                  }
                })
            }
            return new FS.FSNode(e, r, t, n)
          },
          destroyNode: function (e) {
            FS.hashRemoveNode(e)
          },
          isRoot: function (e) {
            return e === e.parent
          },
          isMountpoint: function (e) {
            return e.mounted
          },
          isFile: function (e) {
            return 32768 == (61440 & e)
          },
          isDir: function (e) {
            return 16384 == (61440 & e)
          },
          isLink: function (e) {
            return 40960 == (61440 & e)
          },
          isChrdev: function (e) {
            return 8192 == (61440 & e)
          },
          isBlkdev: function (e) {
            return 24576 == (61440 & e)
          },
          isFIFO: function (e) {
            return 4096 == (61440 & e)
          },
          isSocket: function (e) {
            return 49152 == (49152 & e)
          },
          flagModes: {
            r: 0,
            rs: 1052672,
            "r+": 2,
            w: 577,
            wx: 705,
            xw: 705,
            "w+": 578,
            "wx+": 706,
            "xw+": 706,
            a: 1089,
            ax: 1217,
            xa: 1217,
            "a+": 1090,
            "ax+": 1218,
            "xa+": 1218
          },
          modeStringToFlags: function (e) {
            var r = FS.flagModes[e];
            if (void 0 === r) throw new Error("Unknown file open mode: " + e);
            return r
          },
          flagsToPermissionString: function (e) {
            var r = ["r", "w", "rw"][2097155 & e];
            return 512 & e && (r += "w"),
              r
          },
          nodePermissions: function (e, r) {
            return FS.ignorePermissions ? 0 : (- 1 === r.indexOf("r") || 292 & e.mode) && (- 1 === r.indexOf("w") || 146 & e.mode) && (- 1 === r.indexOf("x") || 73 & e.mode) ? 0 : ERRNO_CODES.EACCES
          },
          mayLookup: function (e) {
            return FS.nodePermissions(e, "x")
          },
          mayCreate: function (e, r) {
            try {
              FS.lookupNode(e, r);
              return ERRNO_CODES.EEXIST
            } catch (e) { }
            return FS.nodePermissions(e, "wx")
          },
          mayDelete: function (e, r, t) {
            var n;
            try {
              n = FS.lookupNode(e, r)
            } catch (e) {
              return e.errno
            }
            var i = FS.nodePermissions(e, "wx");
            if (i) return i;
            if (t) {
              if (!FS.isDir(n.mode)) return ERRNO_CODES.ENOTDIR;
              if (FS.isRoot(n) || FS.getPath(n) === FS.cwd()) return ERRNO_CODES.EBUSY
            } else if (FS.isDir(n.mode)) return ERRNO_CODES.EISDIR;
            return 0
          },
          mayOpen: function (e, r) {
            return e ? FS.isLink(e.mode) ? ERRNO_CODES.ELOOP : FS.isDir(e.mode) && (0 != (2097155 & r) || 512 & r) ? ERRNO_CODES.EISDIR : FS.nodePermissions(e, FS.flagsToPermissionString(r)) : ERRNO_CODES.ENOENT
          },
          MAX_OPEN_FDS: 4096,
          nextfd: function (e, r) {
            e = e || 1,
              r = r || FS.MAX_OPEN_FDS;
            for (var t = e; t <= r; t++) if (!FS.streams[t]) return t;
            throw new FS.ErrnoError(ERRNO_CODES.EMFILE)
          },
          getStream: function (e) {
            return FS.streams[e]
          },
          createStream: function (e, r, t) {
            if (FS.FSStream || (FS.FSStream = function () { },
              FS.FSStream.prototype = {},
              Object.defineProperties(FS.FSStream.prototype, {
                object: {
                  get: function () {
                    return this.node
                  },
                  set: function (e) {
                    this.node = e
                  }
                },
                isRead: {
                  get: function () {
                    return 1 != (2097155 & this.flags)
                  }
                },
                isWrite: {
                  get: function () {
                    return 0 != (2097155 & this.flags)
                  }
                },
                isAppend: {
                  get: function () {
                    return 1024 & this.flags
                  }
                }
              })), e.__proto__) e.__proto__ = FS.FSStream.prototype;
            else {
              var n = new FS.FSStream;
              for (var i in e) n[i] = e[i];
              e = n
            }
            var o = FS.nextfd(r, t);
            return e.fd = o,
              FS.streams[o] = e,
              e
          },
          closeStream: function (e) {
            FS.streams[e] = null
          },
          chrdev_stream_ops: {
            open: function (e) {
              var r = FS.getDevice(e.node.rdev);
              e.stream_ops = r.stream_ops,
                e.stream_ops.open && e.stream_ops.open(e)
            },
            llseek: function () {
              throw new FS.ErrnoError(ERRNO_CODES.ESPIPE)
            }
          },
          major: function (e) {
            return e >> 8
          },
          minor: function (e) {
            return 255 & e
          },
          makedev: function (e, r) {
            return e << 8 | r
          },
          registerDevice: function (e, r) {
            FS.devices[e] = {
              stream_ops: r
            }
          },
          getDevice: function (e) {
            return FS.devices[e]
          },
          syncfs: function (e, r) {
            "function" == typeof e && (r = e, e = !1);
            var t = 0,
              n = FS.mounts.length;
            function i(e) {
              if (e) return r(e); ++t >= n && r(null)
            }
            for (var o = 0; o < FS.mounts.length; o++) {
              var a = FS.mounts[o];
              a.type.syncfs ? a.type.syncfs(a, e, i) : i(null)
            }
          },
          mount: function (e, r, t) {
            var n;
            t && (t = (n = FS.lookupPath(t, {
              follow: !1
            })).path);
            var i = {
              type: e,
              opts: r,
              mountpoint: t,
              root: null
            },
              o = e.mount(i);
            return o.mount = i,
              i.root = o,
              n && (n.node.mount = i, n.node.mounted = !0, "/" === t && (FS.root = i.root)),
              FS.mounts.push(i),
              o
          },
          lookup: function (e, r) {
            return e.node_ops.lookup(e, r)
          },
          mknod: function (e, r, t) {
            var n = FS.lookupPath(e, {
              parent: !0
            }).node,
              i = PATH.basename(e),
              o = FS.mayCreate(n, i);
            if (o) throw new FS.ErrnoError(o);
            if (!n.node_ops.mknod) throw new FS.ErrnoError(ERRNO_CODES.EPERM);
            return n.node_ops.mknod(n, i, r, t)
          },
          create: function (e, r) {
            return r = void 0 !== r ? r : 511,
              r &= 4095,
              r |= 32768,
              FS.mknod(e, r, 0)
          },
          mkdir: function (e, r) {
            return r = void 0 !== r ? r : 511,
              r &= 1023,
              r |= 16384,
              FS.mknod(e, r, 0)
          },
          mkdev: function (e, r, t) {
            return void 0 === t && (t = r, r = 511),
              r |= 8192,
              FS.mknod(e, r, t)
          },
          symlink: function (e, r) {
            var t = FS.lookupPath(r, {
              parent: !0
            }).node,
              n = PATH.basename(r),
              i = FS.mayCreate(t, n);
            if (i) throw new FS.ErrnoError(i);
            if (!t.node_ops.symlink) throw new FS.ErrnoError(ERRNO_CODES.EPERM);
            return t.node_ops.symlink(t, n, e)
          },
          rename: function (e, r) {
            var t, n, i = PATH.dirname(e),
              o = PATH.dirname(r),
              a = PATH.basename(e),
              s = PATH.basename(r);
            try {
              t = FS.lookupPath(e, {
                parent: !0
              }).node,
                n = FS.lookupPath(r, {
                  parent: !0
                }).node
            } catch (e) {
              throw new FS.ErrnoError(ERRNO_CODES.EBUSY)
            }
            if (t.mount !== n.mount) throw new FS.ErrnoError(ERRNO_CODES.EXDEV);
            var l, u = FS.lookupNode(t, a),
              c = PATH.relative(e, o);
            if ("." !== c.charAt(0)) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
            if ("." !== (c = PATH.relative(r, i)).charAt(0)) throw new FS.ErrnoError(ERRNO_CODES.ENOTEMPTY);
            try {
              l = FS.lookupNode(n, s)
            } catch (e) { }
            if (u !== l) {
              var f = FS.isDir(u.mode),
                d = FS.mayDelete(t, a, f);
              if (d) throw new FS.ErrnoError(d);
              if (d = l ? FS.mayDelete(n, s, f) : FS.mayCreate(n, s)) throw new FS.ErrnoError(d);
              if (!t.node_ops.rename) throw new FS.ErrnoError(ERRNO_CODES.EPERM);
              if (FS.isMountpoint(u) || l && FS.isMountpoint(l)) throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
              if (n !== t && (d = FS.nodePermissions(t, "w"))) throw new FS.ErrnoError(d);
              FS.hashRemoveNode(u);
              try {
                t.node_ops.rename(u, n, s)
              } catch (e) {
                throw e
              } finally {
                FS.hashAddNode(u)
              }
            }
          },
          rmdir: function (e) {
            var r = FS.lookupPath(e, {
              parent: !0
            }).node,
              t = PATH.basename(e),
              n = FS.lookupNode(r, t),
              i = FS.mayDelete(r, t, !0);
            if (i) throw new FS.ErrnoError(i);
            if (!r.node_ops.rmdir) throw new FS.ErrnoError(ERRNO_CODES.EPERM);
            if (FS.isMountpoint(n)) throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
            r.node_ops.rmdir(r, t),
              FS.destroyNode(n)
          },
          readdir: function (e) {
            var r = FS.lookupPath(e, {
              follow: !0
            }).node;
            if (!r.node_ops.readdir) throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
            return r.node_ops.readdir(r)
          },
          unlink: function (e) {
            var r = FS.lookupPath(e, {
              parent: !0
            }).node,
              t = PATH.basename(e),
              n = FS.lookupNode(r, t),
              i = FS.mayDelete(r, t, !1);
            if (i) throw i === ERRNO_CODES.EISDIR && (i = ERRNO_CODES.EPERM),
              new FS.ErrnoError(i);
            if (!r.node_ops.unlink) throw new FS.ErrnoError(ERRNO_CODES.EPERM);
            if (FS.isMountpoint(n)) throw new FS.ErrnoError(ERRNO_CODES.EBUSY);
            r.node_ops.unlink(r, t),
              FS.destroyNode(n)
          },
          readlink: function (e) {
            var r = FS.lookupPath(e, {
              follow: !1
            }).node;
            if (!r.node_ops.readlink) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
            return r.node_ops.readlink(r)
          },
          stat: function (e, r) {
            var t = FS.lookupPath(e, {
              follow: !r
            }).node;
            if (!t.node_ops.getattr) throw new FS.ErrnoError(ERRNO_CODES.EPERM);
            return t.node_ops.getattr(t)
          },
          lstat: function (e) {
            return FS.stat(e, !0)
          },
          chmod: function (e, r, t) {
            var n;
            "string" == typeof e ? n = FS.lookupPath(e, {
              follow: !t
            }).node : n = e;
            if (!n.node_ops.setattr) throw new FS.ErrnoError(ERRNO_CODES.EPERM);
            n.node_ops.setattr(n, {
              mode: 4095 & r | -4096 & n.mode,
              timestamp: Date.now()
            })
          },
          lchmod: function (e, r) {
            FS.chmod(e, r, !0)
          },
          fchmod: function (e, r) {
            var t = FS.getStream(e);
            if (!t) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
            FS.chmod(t.node, r)
          },
          chown: function (e, r, t, n) {
            var i;
            "string" == typeof e ? i = FS.lookupPath(e, {
              follow: !n
            }).node : i = e;
            if (!i.node_ops.setattr) throw new FS.ErrnoError(ERRNO_CODES.EPERM);
            i.node_ops.setattr(i, {
              timestamp: Date.now()
            })
          },
          lchown: function (e, r, t) {
            FS.chown(e, r, t, !0)
          },
          fchown: function (e, r, t) {
            var n = FS.getStream(e);
            if (!n) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
            FS.chown(n.node, r, t)
          },
          truncate: function (e, r) {
            if (r < 0) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
            var t;
            "string" == typeof e ? t = FS.lookupPath(e, {
              follow: !0
            }).node : t = e;
            if (!t.node_ops.setattr) throw new FS.ErrnoError(ERRNO_CODES.EPERM);
            if (FS.isDir(t.mode)) throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
            if (!FS.isFile(t.mode)) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
            var n = FS.nodePermissions(t, "w");
            if (n) throw new FS.ErrnoError(n);
            t.node_ops.setattr(t, {
              size: r,
              timestamp: Date.now()
            })
          },
          ftruncate: function (e, r) {
            var t = FS.getStream(e);
            if (!t) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
            if (0 == (2097155 & t.flags)) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
            FS.truncate(t.node, r)
          },
          utime: function (e, r, t) {
            var n = FS.lookupPath(e, {
              follow: !0
            }).node;
            n.node_ops.setattr(n, {
              timestamp: Math.max(r, t)
            })
          },
          open: function (e, r, t, n, i) {
            var o;
            if (r = "string" == typeof r ? FS.modeStringToFlags(r) : r, t = void 0 === t ? 511 : t, t = 64 & r ? 4095 & t | 32768 : 0, "object" == typeof e) o = e;
            else {
              e = PATH.normalize(e);
              try {
                o = FS.lookupPath(e, {
                  follow: !(131072 & r)
                }).node
              } catch (e) { }
            }
            if (64 & r) if (o) {
              if (128 & r) throw new FS.ErrnoError(ERRNO_CODES.EEXIST)
            } else o = FS.mknod(e, t, 0);
            if (!o) throw new FS.ErrnoError(ERRNO_CODES.ENOENT);
            FS.isChrdev(o.mode) && (r &= -513);
            var a = FS.mayOpen(o, r);
            if (a) throw new FS.ErrnoError(a);
            512 & r && FS.truncate(o, 0),
              r &= -641;
            var s = FS.createStream({
              node: o,
              path: FS.getPath(o),
              flags: r,
              seekable: !0,
              position: 0,
              stream_ops: o.stream_ops,
              ungotten: [],
              error: !1
            },
              n, i);
            return s.stream_ops.open && s.stream_ops.open(s),
              !Module.logReadFiles || 1 & r || (FS.readFiles || (FS.readFiles = {}), e in FS.readFiles || (FS.readFiles[e] = 1, Module.printErr("read file: " + e))),
              s
          },
          close: function (e) {
            try {
              e.stream_ops.close && e.stream_ops.close(e)
            } catch (e) {
              throw e
            } finally {
              FS.closeStream(e.fd)
            }
          },
          llseek: function (e, r, t) {
            if (!e.seekable || !e.stream_ops.llseek) throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
            return e.stream_ops.llseek(e, r, t)
          },
          read: function (e, r, t, n, i) {
            if (n < 0 || i < 0) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
            if (1 == (2097155 & e.flags)) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
            if (FS.isDir(e.node.mode)) throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
            if (!e.stream_ops.read) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
            var o = !0;
            if (void 0 === i) i = e.position,
              o = !1;
            else if (!e.seekable) throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
            var a = e.stream_ops.read(e, r, t, n, i);
            return o || (e.position += a),
              a
          },
          write: function (e, r, t, n, i, o) {
            if (n < 0 || i < 0) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
            if (0 == (2097155 & e.flags)) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
            if (FS.isDir(e.node.mode)) throw new FS.ErrnoError(ERRNO_CODES.EISDIR);
            if (!e.stream_ops.write) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
            var a = !0;
            if (void 0 === i) i = e.position,
              a = !1;
            else if (!e.seekable) throw new FS.ErrnoError(ERRNO_CODES.ESPIPE);
            1024 & e.flags && FS.llseek(e, 0, 2);
            var s = e.stream_ops.write(e, r, t, n, i, o);
            return a || (e.position += s),
              s
          },
          allocate: function (e, r, t) {
            if (r < 0 || t <= 0) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
            if (0 == (2097155 & e.flags)) throw new FS.ErrnoError(ERRNO_CODES.EBADF);
            if (!FS.isFile(e.node.mode) && !FS.isDir(node.mode)) throw new FS.ErrnoError(ERRNO_CODES.ENODEV);
            if (!e.stream_ops.allocate) throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
            e.stream_ops.allocate(e, r, t)
          },
          mmap: function (e, r, t, n, i, o, a) {
            if (1 == (2097155 & e.flags)) throw new FS.ErrnoError(ERRNO_CODES.EACCES);
            if (!e.stream_ops.mmap) throw new FS.errnoError(ERRNO_CODES.ENODEV);
            return e.stream_ops.mmap(e, r, t, n, i, o, a)
          },
          ioctl: function (e, r, t) {
            if (!e.stream_ops.ioctl) throw new FS.ErrnoError(ERRNO_CODES.ENOTTY);
            return e.stream_ops.ioctl(e, r, t)
          },
          readFile: function (e, r) {
            var t; (r = r || {}).flags = r.flags || "r",
              r.encoding = r.encoding || "binary";
            var n = FS.open(e, r.flags),
              i = FS.stat(e).size,
              o = new Uint8Array(i);
            if (FS.read(n, o, 0, i, 0), "utf8" === r.encoding) {
              t = "";
              for (var a = new Runtime.UTF8Processor,
                s = 0; s < i; s++) t += a.processCChar(o[s])
            } else {
              if ("binary" !== r.encoding) throw new Error('Invalid encoding type "' + r.encoding + '"');
              t = o
            }
            return FS.close(n),
              t
          },
          writeFile: function (e, r, t) {
            (t = t || {}).flags = t.flags || "w",
              t.encoding = t.encoding || "utf8";
            var n = FS.open(e, t.flags, t.mode);
            if ("utf8" === t.encoding) {
              var i = new Runtime.UTF8Processor,
                o = new Uint8Array(i.processJSString(r));
              FS.write(n, o, 0, o.length, 0)
            } else {
              if ("binary" !== t.encoding) throw new Error('Invalid encoding type "' + t.encoding + '"');
              FS.write(n, r, 0, r.length, 0)
            }
            FS.close(n)
          },
          cwd: function () {
            return FS.currentPath
          },
          chdir: function (e) {
            var r = FS.lookupPath(e, {
              follow: !0
            });
            if (!FS.isDir(r.node.mode)) throw new FS.ErrnoError(ERRNO_CODES.ENOTDIR);
            var t = FS.nodePermissions(r.node, "x");
            if (t) throw new FS.ErrnoError(t);
            FS.currentPath = r.path
          },
          createDefaultDirectories: function () {
            FS.mkdir("/tmp")
          },
          createDefaultDevices: function () {
            FS.mkdir("/dev"),
              FS.registerDevice(FS.makedev(1, 3), {
                read: function () {
                  return 0
                },
                write: function () {
                  return 0
                }
              }),
              FS.mkdev("/dev/null", FS.makedev(1, 3)),
              TTY.register(FS.makedev(5, 0), TTY.default_tty_ops),
              TTY.register(FS.makedev(6, 0), TTY.default_tty1_ops),
              FS.mkdev("/dev/tty", FS.makedev(5, 0)),
              FS.mkdev("/dev/tty1", FS.makedev(6, 0)),
              FS.mkdir("/dev/shm"),
              FS.mkdir("/dev/shm/tmp")
          },
          createStandardStreams: function () {
            Module.stdin ? FS.createDevice("/dev", "stdin", Module.stdin) : FS.symlink("/dev/tty", "/dev/stdin"),
              Module.stdout ? FS.createDevice("/dev", "stdout", null, Module.stdout) : FS.symlink("/dev/tty", "/dev/stdout"),
              Module.stderr ? FS.createDevice("/dev", "stderr", null, Module.stderr) : FS.symlink("/dev/tty1", "/dev/stderr");
            var e = FS.open("/dev/stdin", "r");
            HEAP32[_stdin >> 2] = e.fd,
              assert(1 === e.fd, "invalid handle for stdin (" + e.fd + ")");
            var r = FS.open("/dev/stdout", "w");
            HEAP32[_stdout >> 2] = r.fd,
              assert(2 === r.fd, "invalid handle for stdout (" + r.fd + ")");
            var t = FS.open("/dev/stderr", "w");
            HEAP32[_stderr >> 2] = t.fd,
              assert(3 === t.fd, "invalid handle for stderr (" + t.fd + ")")
          },
          ensureErrnoError: function () {
            FS.ErrnoError || (FS.ErrnoError = function (e) {
              for (var r in this.errno = e,
                ERRNO_CODES) if (ERRNO_CODES[r] === e) {
                  this.code = r;
                  break
                }
              this.message = ERRNO_MESSAGES[e],
                this.stack = stackTrace()
            },
              FS.ErrnoError.prototype = new Error, FS.ErrnoError.prototype.constructor = FS.ErrnoError, [ERRNO_CODES.ENOENT].forEach(function (e) {
                FS.genericErrors[e] = new FS.ErrnoError(e),
                  FS.genericErrors[e].stack = "<generic error, no stack>"
              }))
          },
          staticInit: function () {
            FS.ensureErrnoError(),
              FS.nameTable = new Array(4096),
              FS.root = FS.createNode(null, "/", 16895, 0),
              FS.mount(MEMFS, {},
                "/"),
              FS.createDefaultDirectories(),
              FS.createDefaultDevices()
          },
          init: function (e, r, t) {
            assert(!FS.init.initialized, "FS.init was previously called. If you want to initialize later with custom parameters, remove any earlier calls (note that one is automatically added to the generated code)"),
              FS.init.initialized = !0,
              FS.ensureErrnoError(),
              Module.stdin = e || Module.stdin,
              Module.stdout = r || Module.stdout,
              Module.stderr = t || Module.stderr,
              FS.createStandardStreams()
          },
          quit: function () {
            FS.init.initialized = !1;
            for (var e = 0; e < FS.streams.length; e++) {
              var r = FS.streams[e];
              r && FS.close(r)
            }
          },
          getMode: function (e, r) {
            var t = 0;
            return e && (t |= 365),
              r && (t |= 146),
              t
          },
          joinPath: function (e, r) {
            var t = PATH.join.apply(null, e);
            return r && "/" == t[0] && (t = t.substr(1)),
              t
          },
          absolutePath: function (e, r) {
            return PATH.resolve(r, e)
          },
          standardizePath: function (e) {
            return PATH.normalize(e)
          },
          findObject: function (e, r) {
            var t = FS.analyzePath(e, r);
            return t.exists ? t.object : (___setErrNo(t.error), null)
          },
          analyzePath: function (e, r) {
            try {
              e = (n = FS.lookupPath(e, {
                follow: !r
              })).path
            } catch (e) { }
            var t = {
              isRoot: !1,
              exists: !1,
              error: 0,
              name: null,
              path: null,
              object: null,
              parentExists: !1,
              parentPath: null,
              parentObject: null
            };
            try {
              var n = FS.lookupPath(e, {
                parent: !0
              });
              t.parentExists = !0,
                t.parentPath = n.path,
                t.parentObject = n.node,
                t.name = PATH.basename(e),
                n = FS.lookupPath(e, {
                  follow: !r
                }),
                t.exists = !0,
                t.path = n.path,
                t.object = n.node,
                t.name = n.node.name,
                t.isRoot = "/" === n.path
            } catch (e) {
              t.error = e.errno
            }
            return t
          },
          createFolder: function (e, r, t, n) {
            var i = PATH.join2("string" == typeof e ? e : FS.getPath(e), r),
              o = FS.getMode(t, n);
            return FS.mkdir(i, o)
          },
          createPath: function (e, r, t, n) {
            e = "string" == typeof e ? e : FS.getPath(e);
            for (var i = r.split("/").reverse(); i.length;) {
              var o = i.pop();
              if (o) {
                var a = PATH.join2(e, o);
                try {
                  FS.mkdir(a)
                } catch (e) { }
                e = a
              }
            }
            return a
          },
          createFile: function (e, r, t, n, i) {
            var o = PATH.join2("string" == typeof e ? e : FS.getPath(e), r),
              a = FS.getMode(n, i);
            return FS.create(o, a)
          },
          createDataFile: function (e, r, t, n, i, o) {
            var a = r ? PATH.join2("string" == typeof e ? e : FS.getPath(e), r) : e,
              s = FS.getMode(n, i),
              l = FS.create(a, s);
            if (t) {
              if ("string" == typeof t) {
                for (var u = new Array(t.length), c = 0, f = t.length; c < f; ++c) u[c] = t.charCodeAt(c);
                t = u
              }
              FS.chmod(l, 146 | s);
              var d = FS.open(l, "w");
              FS.write(d, t, 0, t.length, 0, o),
                FS.close(d),
                FS.chmod(l, s)
            }
            return l
          },
          createDevice: function (e, r, t, n) {
            var i = PATH.join2("string" == typeof e ? e : FS.getPath(e), r),
              o = FS.getMode(!!t, !!n);
            FS.createDevice.major || (FS.createDevice.major = 64);
            var a = FS.makedev(FS.createDevice.major++, 0);
            return FS.registerDevice(a, {
              open: function (e) {
                e.seekable = !1
              },
              close: function (e) {
                n && n.buffer && n.buffer.length && n(10)
              },
              read: function (e, r, n, i, o) {
                for (var a = 0,
                  s = 0; s < i; s++) {
                  var l;
                  try {
                    l = t()
                  } catch (e) {
                    throw new FS.ErrnoError(ERRNO_CODES.EIO)
                  }
                  if (void 0 === l && 0 === a) throw new FS.ErrnoError(ERRNO_CODES.EAGAIN);
                  if (null === l || void 0 === l) break;
                  a++,
                    r[n + s] = l
                }
                return a && (e.node.timestamp = Date.now()),
                  a
              },
              write: function (e, r, t, i, o) {
                for (var a = 0; a < i; a++) try {
                  n(r[t + a])
                } catch (e) {
                  throw new FS.ErrnoError(ERRNO_CODES.EIO)
                }
                return i && (e.node.timestamp = Date.now()),
                  a
              }
            }),
              FS.mkdev(i, o, a)
          },
          createLink: function (e, r, t, n, i) {
            var o = PATH.join2("string" == typeof e ? e : FS.getPath(e), r);
            return FS.symlink(t, o)
          },
          forceLoadFile: function (e) {
            if (e.isDevice || e.isFolder || e.link || e.contents) return !0;
            var r = !0;
            if ("undefined" != typeof XMLHttpRequest) throw new Error("Lazy loading should have been performed (contents set) in createLazyFile, but it was not. Lazy loading only works in web workers. Use --embed-file or --preload-file in emcc on the main thread.");
            if (!Module.read) throw new Error("Cannot load without read() or XMLHttpRequest.");
            try {
              e.contents = intArrayFromString(Module.read(e.url), !0)
            } catch (e) {
              r = !1
            }
            return r || ___setErrNo(ERRNO_CODES.EIO),
              r
          },
          createLazyFile: function (e, r, t, n, i) {
            if ("undefined" != typeof XMLHttpRequest) {
              if (!ENVIRONMENT_IS_WORKER) throw "Cannot do synchronous binary XHRs outside webworkers in modern browsers. Use --embed-file or --preload-file in emcc";
              function o() {
                this.lengthKnown = !1,
                  this.chunks = []
              }
              o.prototype.get = function (e) {
                if (!(e > this.length - 1 || e < 0)) {
                  var r = e % this.chunkSize,
                    t = Math.floor(e / this.chunkSize);
                  return this.getter(t)[r]
                }
              },
                o.prototype.setDataGetter = function (e) {
                  this.getter = e
                },
                o.prototype.cacheLength = function () {
                  var e = new XMLHttpRequest;
                  if (e.open("HEAD", t, !1), e.send(null), !(e.status >= 200 && e.status < 300 || 304 === e.status)) throw new Error("Couldn't load " + t + ". Status: " + e.status);
                  var r, n = Number(e.getResponseHeader("Content-length")),
                    i = 1048576; (r = e.getResponseHeader("Accept-Ranges")) && "bytes" === r || (i = n);
                  var o = this;
                  o.setDataGetter(function (e) {
                    var r = e * i,
                      a = (e + 1) * i - 1;
                    if (a = Math.min(a, n - 1), void 0 === o.chunks[e] && (o.chunks[e] = function (e, r) {
                      if (e > r) throw new Error("invalid range (" + e + ", " + r + ") or no bytes requested!");
                      if (r > n - 1) throw new Error("only " + n + " bytes available! programmer error!");
                      var o = new XMLHttpRequest;
                      if (o.open("GET", t, !1), n !== i && o.setRequestHeader("Range", "bytes=" + e + "-" + r), "undefined" != typeof Uint8Array && (o.responseType = "arraybuffer"), o.overrideMimeType && o.overrideMimeType("text/plain; charset=x-user-defined"), o.send(null), !(o.status >= 200 && o.status < 300 || 304 === o.status)) throw new Error("Couldn't load " + t + ". Status: " + o.status);
                      return void 0 !== o.response ? new Uint8Array(o.response || []) : intArrayFromString(o.responseText || "", !0)
                    }(r, a)), void 0 === o.chunks[e]) throw new Error("doXHR failed!");
                    return o.chunks[e]
                  }),
                    this._length = n,
                    this._chunkSize = i,
                    this.lengthKnown = !0
                };
              var a = new o;
              Object.defineProperty(a, "length", {
                get: function () {
                  return this.lengthKnown || this.cacheLength(),
                    this._length
                }
              }),
                Object.defineProperty(a, "chunkSize", {
                  get: function () {
                    return this.lengthKnown || this.cacheLength(),
                      this._chunkSize
                  }
                });
              var s = {
                isDevice: !1,
                contents: a
              }
            } else s = {
              isDevice: !1,
              url: t
            };
            var l = FS.createFile(e, r, s, n, i);
            s.contents ? l.contents = s.contents : s.url && (l.contents = null, l.url = s.url);
            var u = {};
            return Object.keys(l.stream_ops).forEach(function (e) {
              var r = l.stream_ops[e];
              u[e] = function () {
                if (!FS.forceLoadFile(l)) throw new FS.ErrnoError(ERRNO_CODES.EIO);
                return r.apply(null, arguments)
              }
            }),
              u.read = function (e, r, t, n, i) {
                if (!FS.forceLoadFile(l)) throw new FS.ErrnoError(ERRNO_CODES.EIO);
                var o = e.node.contents;
                if (i >= o.length) return 0;
                var a = Math.min(o.length - i, n);
                if (assert(a >= 0), o.slice) for (var s = 0; s < a; s++) r[t + s] = o[i + s];
                else for (s = 0; s < a; s++) r[t + s] = o.get(i + s);
                return a
              },
              l.stream_ops = u,
              l
          },
          createPreloadedFile: function (e, r, t, n, i, o, a, s, l) {
            Browser.init();
            var u = r ? PATH.resolve(PATH.join2(e, r)) : e;
            function c(t) {
              function c(t) {
                s || FS.createDataFile(e, r, t, n, i, l),
                  o && o(),
                  removeRunDependency("cp " + u)
              }
              var f = !1;
              Module.preloadPlugins.forEach(function (e) {
                f || e.canHandle(u) && (e.handle(t, u, c,
                  function () {
                    a && a(),
                      removeRunDependency("cp " + u)
                  }), f = !0)
              }),
                f || c(t)
            }
            addRunDependency("cp " + u),
              "string" == typeof t ? Browser.asyncLoad(t,
                function (e) {
                  c(e)
                },
                a) : c(t)
          },
          indexedDB: function () {
            return window.indexedDB || window.mozIndexedDB || window.webkitIndexedDB || window.msIndexedDB
          },
          DB_NAME: function () {
            return "EM_FS_" + window.location.pathname
          },
          DB_VERSION: 20,
          DB_STORE_NAME: "FILE_DATA",
          saveFilesToDB: function (e, r, t) {
            r = r ||
              function () { },
              t = t ||
              function () { };
            var n = FS.indexedDB();
            try {
              var i = n.open(FS.DB_NAME(), FS.DB_VERSION)
            } catch (e) {
              return t(e)
            }
            i.onupgradeneeded = function () {
              console.log("creating db"),
                i.result.createObjectStore(FS.DB_STORE_NAME)
            },
              i.onsuccess = function () {
                var n = i.result.transaction([FS.DB_STORE_NAME], "readwrite"),
                  o = n.objectStore(FS.DB_STORE_NAME),
                  a = 0,
                  s = 0,
                  l = e.length;
                function u() {
                  0 == s ? r() : t()
                }
                e.forEach(function (e) {
                  var r = o.put(FS.analyzePath(e).object.contents, e);
                  r.onsuccess = function () {
                    ++a + s == l && u()
                  },
                    r.onerror = function () {
                      a + ++s == l && u()
                    }
                }),
                  n.onerror = t
              },
              i.onerror = t
          },
          loadFilesFromDB: function (e, r, t) {
            r = r ||
              function () { },
              t = t ||
              function () { };
            var n = FS.indexedDB();
            try {
              var i = n.open(FS.DB_NAME(), FS.DB_VERSION)
            } catch (e) {
              return t(e)
            }
            i.onupgradeneeded = t,
              i.onsuccess = function () {
                var n = i.result;
                try {
                  var o = n.transaction([FS.DB_STORE_NAME], "readonly")
                } catch (e) {
                  return void t(e)
                }
                var a = o.objectStore(FS.DB_STORE_NAME),
                  s = 0,
                  l = 0,
                  u = e.length;
                function c() {
                  0 == l ? r() : t()
                }
                e.forEach(function (e) {
                  var r = a.get(e);
                  r.onsuccess = function () {
                    FS.analyzePath(e).exists && FS.unlink(e),
                      FS.createDataFile(PATH.dirname(e), PATH.basename(e), r.result, !0, !0, !0),
                      ++s + l == u && c()
                  },
                    r.onerror = function () {
                      s + ++l == u && c()
                    }
                }),
                  o.onerror = t
              },
              i.onerror = t
          }
        },
          SOCKFS = {
            mount: function (e) {
              return FS.createNode(null, "/", 16895, 0)
            },
            createSocket: function (e, r, t) {
              t && assert(1 == r == (6 == t));
              var n = {
                family: e,
                type: r,
                protocol: t,
                server: null,
                peers: {},
                pending: [],
                recv_queue: [],
                sock_ops: SOCKFS.websocket_sock_ops
              },
                i = SOCKFS.nextname(),
                o = FS.createNode(SOCKFS.root, i, 49152, 0);
              o.sock = n;
              var a = FS.createStream({
                path: i,
                node: o,
                flags: FS.modeStringToFlags("r+"),
                seekable: !1,
                stream_ops: SOCKFS.stream_ops
              });
              return n.stream = a,
                n
            },
            getSocket: function (e) {
              var r = FS.getStream(e);
              return r && FS.isSocket(r.node.mode) ? r.node.sock : null
            },
            stream_ops: {
              poll: function (e) {
                var r = e.node.sock;
                return r.sock_ops.poll(r)
              },
              ioctl: function (e, r, t) {
                var n = e.node.sock;
                return n.sock_ops.ioctl(n, r, t)
              },
              read: function (e, r, t, n, i) {
                var o = e.node.sock,
                  a = o.sock_ops.recvmsg(o, n);
                return a ? (r.set(a.buffer, t), a.buffer.length) : 0
              },
              write: function (e, r, t, n, i) {
                var o = e.node.sock;
                return o.sock_ops.sendmsg(o, r, t, n)
              },
              close: function (e) {
                var r = e.node.sock;
                r.sock_ops.close(r)
              }
            },
            nextname: function () {
              return SOCKFS.nextname.current || (SOCKFS.nextname.current = 0),
                "socket[" + SOCKFS.nextname.current++ + "]"
            },
            websocket_sock_ops: {
              createPeer: function (e, r, t) {
                var n;
                if ("object" == typeof r && (n = r, r = null, t = null), n) if (n._socket) r = n._socket.remoteAddress,
                  t = n._socket.remotePort;
                else {
                  var i = /ws[s]?:\/\/([^:]+):(\d+)/.exec(n.url);
                  if (!i) throw new Error("WebSocket URL must be in the format ws(s)://address:port");
                  r = i[1],
                    t = parseInt(i[2], 10)
                } else try {
                  var o = "ws://" + r + ":" + t,
                    a = ENVIRONMENT_IS_NODE ? {
                      headers: {
                        "websocket-protocol": ["binary"]
                      }
                    } : ["binary"]; (n = new (ENVIRONMENT_IS_NODE ? __webpack_require__(622) : window.WebSocket)(o, a)).binaryType = "arraybuffer"
                } catch (e) {
                  throw new FS.ErrnoError(ERRNO_CODES.EHOSTUNREACH)
                }
                var s = {
                  addr: r,
                  port: t,
                  socket: n,
                  dgram_send_queue: []
                };
                return SOCKFS.websocket_sock_ops.addPeer(e, s),
                  SOCKFS.websocket_sock_ops.handlePeerEvents(e, s),
                  2 === e.type && void 0 !== e.sport && s.dgram_send_queue.push(new Uint8Array([255, 255, 255, 255, "p".charCodeAt(0), "o".charCodeAt(0), "r".charCodeAt(0), "t".charCodeAt(0), (65280 & e.sport) >> 8, 255 & e.sport])),
                  s
              },
              getPeer: function (e, r, t) {
                return e.peers[r + ":" + t]
              },
              addPeer: function (e, r) {
                e.peers[r.addr + ":" + r.port] = r
              },
              removePeer: function (e, r) {
                delete e.peers[r.addr + ":" + r.port]
              },
              handlePeerEvents: function (e, r) {
                var t = !0,
                  n = function () {
                    try {
                      for (var e = r.dgram_send_queue.shift(); e;) r.socket.send(e),
                        e = r.dgram_send_queue.shift()
                    } catch (e) {
                      r.socket.close()
                    }
                  };
                function i(n) {
                  assert("string" != typeof n && void 0 !== n.byteLength),
                    n = new Uint8Array(n);
                  var i = t;
                  if (t = !1, i && 10 === n.length && 255 === n[0] && 255 === n[1] && 255 === n[2] && 255 === n[3] && n[4] === "p".charCodeAt(0) && n[5] === "o".charCodeAt(0) && n[6] === "r".charCodeAt(0) && n[7] === "t".charCodeAt(0)) {
                    var o = n[8] << 8 | n[9];
                    return SOCKFS.websocket_sock_ops.removePeer(e, r),
                      r.port = o,
                      void SOCKFS.websocket_sock_ops.addPeer(e, r)
                  }
                  e.recv_queue.push({
                    addr: r.addr,
                    port: r.port,
                    data: n
                  })
                }
                ENVIRONMENT_IS_NODE ? (r.socket.on("open", n), r.socket.on("message",
                  function (e, r) {
                    r.binary && i(new Uint8Array(e).buffer)
                  }), r.socket.on("error",
                    function () { })) : (r.socket.onopen = n, r.socket.onmessage = function (e) {
                      i(e.data)
                    })
              },
              poll: function (e) {
                if (1 === e.type && e.server) return e.pending.length ? 65 : 0;
                var r = 0,
                  t = 1 === e.type ? SOCKFS.websocket_sock_ops.getPeer(e, e.daddr, e.dport) : null;
                return (e.recv_queue.length || !t || t && t.socket.readyState === t.socket.CLOSING || t && t.socket.readyState === t.socket.CLOSED) && (r |= 65),
                  (!t || t && t.socket.readyState === t.socket.OPEN) && (r |= 4),
                  (t && t.socket.readyState === t.socket.CLOSING || t && t.socket.readyState === t.socket.CLOSED) && (r |= 16),
                  r
              },
              ioctl: function (e, r, t) {
                switch (r) {
                  case 21531:
                    var n = 0;
                    return e.recv_queue.length && (n = e.recv_queue[0].data.length),
                      HEAP32[t >> 2] = n,
                      0;
                  default:
                    return ERRNO_CODES.EINVAL
                }
              },
              close: function (e) {
                if (e.server) {
                  try {
                    e.server.close()
                  } catch (e) { }
                  e.server = null
                }
                for (var r = Object.keys(e.peers), t = 0; t < r.length; t++) {
                  var n = e.peers[r[t]];
                  try {
                    n.socket.close()
                  } catch (e) { }
                  SOCKFS.websocket_sock_ops.removePeer(e, n)
                }
                return 0
              },
              bind: function (e, r, t) {
                if (void 0 !== e.saddr || void 0 !== e.sport) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
                if (e.saddr = r, e.sport = t || _mkport(), 2 === e.type) {
                  e.server && (e.server.close(), e.server = null);
                  try {
                    e.sock_ops.listen(e, 0)
                  } catch (e) {
                    if (!(e instanceof FS.ErrnoError)) throw e;
                    if (e.errno !== ERRNO_CODES.EOPNOTSUPP) throw e
                  }
                }
              },
              connect: function (e, r, t) {
                if (e.server) throw new FS.ErrnoError(ERRNO_CODS.EOPNOTSUPP);
                if (void 0 !== e.daddr && void 0 !== e.dport) {
                  var n = SOCKFS.websocket_sock_ops.getPeer(e, e.daddr, e.dport);
                  if (n) throw n.socket.readyState === n.socket.CONNECTING ? new FS.ErrnoError(ERRNO_CODES.EALREADY) : new FS.ErrnoError(ERRNO_CODES.EISCONN)
                }
                var i = SOCKFS.websocket_sock_ops.createPeer(e, r, t);
                throw e.daddr = i.addr,
                e.dport = i.port,
                new FS.ErrnoError(ERRNO_CODES.EINPROGRESS)
              },
              listen: function (e, r) {
                if (!ENVIRONMENT_IS_NODE) throw new FS.ErrnoError(ERRNO_CODES.EOPNOTSUPP);
                if (e.server) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
                var t = __webpack_require__(622).Server,
                  n = e.saddr;
                e.server = new t({
                  host: n,
                  port: e.sport
                }),
                  e.server.on("connection",
                    function (r) {
                      if (1 === e.type) {
                        var t = SOCKFS.createSocket(e.family, e.type, e.protocol),
                          n = SOCKFS.websocket_sock_ops.createPeer(t, r);
                        t.daddr = n.addr,
                          t.dport = n.port,
                          e.pending.push(t)
                      } else SOCKFS.websocket_sock_ops.createPeer(e, r)
                    }),
                  e.server.on("closed",
                    function () {
                      e.server = null
                    }),
                  e.server.on("error",
                    function () { })
              },
              accept: function (e) {
                if (!e.server) throw new FS.ErrnoError(ERRNO_CODES.EINVAL);
                var r = e.pending.shift();
                return r.stream.flags = e.stream.flags,
                  r
              },
              getname: function (e, r) {
                var t, n;
                if (r) {
                  if (void 0 === e.daddr || void 0 === e.dport) throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
                  t = e.daddr,
                    n = e.dport
                } else t = e.saddr || 0,
                  n = e.sport || 0;
                return {
                  addr: t,
                  port: n
                }
              },
              sendmsg: function (e, r, t, n, i, o) {
                if (2 === e.type) {
                  if (void 0 !== i && void 0 !== o || (i = e.daddr, o = e.dport), void 0 === i || void 0 === o) throw new FS.ErrnoError(ERRNO_CODES.EDESTADDRREQ)
                } else i = e.daddr,
                  o = e.dport;
                var a, s = SOCKFS.websocket_sock_ops.getPeer(e, i, o);
                if (1 === e.type) {
                  if (!s || s.socket.readyState === s.socket.CLOSING || s.socket.readyState === s.socket.CLOSED) throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
                  if (s.socket.readyState === s.socket.CONNECTING) throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)
                }
                if (a = r instanceof Array || r instanceof ArrayBuffer ? r.slice(t, t + n) : r.buffer.slice(r.byteOffset + t, r.byteOffset + t + n), 2 === e.type && (!s || s.socket.readyState !== s.socket.OPEN)) return s && s.socket.readyState !== s.socket.CLOSING && s.socket.readyState !== s.socket.CLOSED || (s = SOCKFS.websocket_sock_ops.createPeer(e, i, o)),
                  s.dgram_send_queue.push(a),
                  n;
                try {
                  return s.socket.send(a),
                    n
                } catch (e) {
                  throw new FS.ErrnoError(ERRNO_CODES.EINVAL)
                }
              },
              recvmsg: function (e, r) {
                if (1 === e.type && e.server) throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN);
                var t = e.recv_queue.shift();
                if (!t) {
                  if (1 === e.type) {
                    var n = SOCKFS.websocket_sock_ops.getPeer(e, e.daddr, e.dport);
                    if (n) {
                      if (n.socket.readyState === n.socket.CLOSING || n.socket.readyState === n.socket.CLOSED) return null;
                      throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)
                    }
                    throw new FS.ErrnoError(ERRNO_CODES.ENOTCONN)
                  }
                  throw new FS.ErrnoError(ERRNO_CODES.EAGAIN)
                }
                var i = t.data.byteLength || t.data.length,
                  o = t.data.byteOffset || 0,
                  a = t.data.buffer || t.data,
                  s = Math.min(r, i),
                  l = {
                    buffer: new Uint8Array(a, o, s),
                    addr: t.addr,
                    port: t.port
                  };
                if (1 === e.type && s < i) {
                  var u = i - s;
                  t.data = new Uint8Array(a, o + s, u),
                    e.recv_queue.unshift(t)
                }
                return l
              }
            }
          };
        function _send(e, r, t, n) {
          return SOCKFS.getSocket(e) ? _write(e, r, t) : (___setErrNo(ERRNO_CODES.EBADF), -1)
        }
        function _pwrite(e, r, t, n) {
          var i = FS.getStream(e);
          if (!i) return ___setErrNo(ERRNO_CODES.EBADF),
            -1;
          try {
            var o = HEAP8;
            return FS.write(i, o, r, t, n)
          } catch (e) {
            return FS.handleFSError(e),
              -1
          }
        }
        function _write(e, r, t) {
          var n = FS.getStream(e);
          if (!n) return ___setErrNo(ERRNO_CODES.EBADF),
            -1;
          try {
            var i = HEAP8;
            return FS.write(n, i, r, t)
          } catch (e) {
            return FS.handleFSError(e),
              -1
          }
        }
        function _fwrite(e, r, t, n) {
          var i = t * r;
          if (0 == i) return 0;
          var o = _write(n, e, i);
          if (- 1 == o) {
            var a = FS.getStream(n);
            return a && (a.error = !0),
              0
          }
          return Math.floor(o / r)
        }
        function __reallyNegative(e) {
          return e < 0 || 0 === e && 1 / e == -1 / 0
        }
        function __formatString(e, r) {
          var t = e,
            n = 0;
          function i(e) {
            var t;
            return "double" === e ? t = HEAPF64[r + n >> 3] : "i64" == e ? (t = [HEAP32[r + n >> 2], HEAP32[r + (n + 8) >> 2]], n += 8) : (e = "i32", t = HEAP32[r + n >> 2]),
              n += Math.max(Runtime.getNativeFieldSize(e), Runtime.getAlignSize(e, null, !0)),
              t
          }
          for (var o, a, s = []; ;) {
            var l = t;
            if (0 === (o = HEAP8[t])) break;
            if (a = HEAP8[t + 1 | 0], 37 == o) {
              var u = !1,
                c = !1,
                f = !1,
                d = !1,
                _ = !1;
              e: for (; ;) {
                switch (a) {
                  case 43:
                    u = !0;
                    break;
                  case 45:
                    c = !0;
                    break;
                  case 35:
                    f = !0;
                    break;
                  case 48:
                    if (d) break e;
                    d = !0;
                    break;
                  case 32:
                    _ = !0;
                    break;
                  default:
                    break e
                }
                a = HEAP8[++t + 1 | 0]
              }
              var h = 0;
              if (42 == a) h = i("i32"),
                a = HEAP8[++t + 1 | 0];
              else for (; a >= 48 && a <= 57;) h = 10 * h + (a - 48),
                a = HEAP8[++t + 1 | 0];
              var p, m = !1;
              if (46 == a) {
                var w = 0;
                if (m = !0, 42 == (a = HEAP8[++t + 1 | 0])) w = i("i32"),
                  t++;
                else for (; ;) {
                  var b = HEAP8[t + 1 | 0];
                  if (b < 48 || b > 57) break;
                  w = 10 * w + (b - 48),
                    t++
                }
                a = HEAP8[t + 1 | 0]
              } else w = 6;
              switch (String.fromCharCode(a)) {
                case "h":
                  104 == HEAP8[t + 2 | 0] ? (t++, p = 1) : p = 2;
                  break;
                case "l":
                  108 == HEAP8[t + 2 | 0] ? (t++, p = 8) : p = 4;
                  break;
                case "L":
                case "q":
                case "j":
                  p = 8;
                  break;
                case "z":
                case "t":
                case "I":
                  p = 4;
                  break;
                default:
                  p = null
              }
              switch (p && t++, a = HEAP8[t + 1 | 0], String.fromCharCode(a)) {
                case "d":
                case "i":
                case "u":
                case "o":
                case "x":
                case "X":
                case "p":
                  var E = 100 == a || 105 == a,
                    S = T = i("i" + 8 * (p = p || 4));
                  if (8 == p && (T = Runtime.makeBigInt(T[0], T[1], 117 == a)), p <= 4) {
                    var v = Math.pow(256, p) - 1;
                    T = (E ? reSign : unSign)(T & v, 8 * p)
                  }
                  var k = Math.abs(T),
                    g = "";
                  if (100 == a || 105 == a) A = 8 == p && i64Math ? i64Math.stringify(S[0], S[1], null) : reSign(T, 8 * p, 1).toString(10);
                  else if (117 == a) A = 8 == p && i64Math ? i64Math.stringify(S[0], S[1], !0) : unSign(T, 8 * p, 1).toString(10),
                    T = Math.abs(T);
                  else if (111 == a) A = (f ? "0" : "") + k.toString(8);
                  else if (120 == a || 88 == a) {
                    if (g = f && 0 != T ? "0x" : "", 8 == p && i64Math) if (S[1]) {
                      A = (S[1] >>> 0).toString(16);
                      for (var y = (S[0] >>> 0).toString(16); y.length < 8;) y = "0" + y;
                      A += y
                    } else A = (S[0] >>> 0).toString(16);
                    else if (T < 0) {
                      T = -T,
                        A = (k - 1).toString(16);
                      for (var M = [], F = 0; F < A.length; F++) M.push((15 - parseInt(A[F], 16)).toString(16));
                      for (A = M.join(""); A.length < 2 * p;) A = "f" + A
                    } else A = k.toString(16);
                    88 == a && (g = g.toUpperCase(), A = A.toUpperCase())
                  } else 112 == a && (0 === k ? A = "(nil)" : (g = "0x", A = k.toString(16)));
                  if (m) for (; A.length < w;) A = "0" + A;
                  for (T >= 0 && (u ? g = "+" + g : _ && (g = " " + g)), "-" == A.charAt(0) && (g = "-" + g, A = A.substr(1)); g.length + A.length < h;) c ? A += " " : d ? A = "0" + A : g = " " + g; (A = g + A).split("").forEach(function (e) {
                    s.push(e.charCodeAt(0))
                  });
                  break;
                case "f":
                case "F":
                case "e":
                case "E":
                case "g":
                case "G":
                  var A, T = i("double");
                  if (isNaN(T)) A = "nan",
                    d = !1;
                  else if (isFinite(T)) {
                    var O = !1,
                      R = Math.min(w, 20);
                    if (103 == a || 71 == a) {
                      O = !0,
                        w = w || 1;
                      var C = parseInt(T.toExponential(R).split("e")[1], 10);
                      w > C && C >= -4 ? (a = (103 == a ? "f" : "F").charCodeAt(0), w -= C + 1) : (a = (103 == a ? "e" : "E").charCodeAt(0), w--),
                        R = Math.min(w, 20)
                    }
                    101 == a || 69 == a ? (A = T.toExponential(R), /[eE][-+]\d$/.test(A) && (A = A.slice(0, -1) + "0" + A.slice(- 1))) : 102 != a && 70 != a || (A = T.toFixed(R), 0 === T && __reallyNegative(T) && (A = "-" + A));
                    var N = A.split("e");
                    if (O && !f) for (; N[0].length > 1 && -1 != N[0].indexOf(".") && ("0" == N[0].slice(- 1) || "." == N[0].slice(- 1));) N[0] = N[0].slice(0, -1);
                    else for (f && -1 == A.indexOf(".") && (N[0] += "."); w > R++;) N[0] += "0";
                    A = N[0] + (N.length > 1 ? "e" + N[1] : ""),
                      69 == a && (A = A.toUpperCase()),
                      T >= 0 && (u ? A = "+" + A : _ && (A = " " + A))
                  } else A = (T < 0 ? "-" : "") + "inf",
                    d = !1;
                  for (; A.length < h;) c ? A += " " : A = !d || "-" != A[0] && "+" != A[0] ? (d ? "0" : " ") + A : A[0] + "0" + A.slice(1);
                  a < 97 && (A = A.toUpperCase()),
                    A.split("").forEach(function (e) {
                      s.push(e.charCodeAt(0))
                    });
                  break;
                case "s":
                  var P = i("i8*"),
                    x = P ? _strlen(P) : "(null)".length;
                  if (m && (x = Math.min(x, w)), !c) for (; x < h--;) s.push(32);
                  if (P) for (F = 0; F < x; F++) s.push(HEAPU8[0 | P++]);
                  else s = s.concat(intArrayFromString("(null)".substr(0, x), !0));
                  if (c) for (; x < h--;) s.push(32);
                  break;
                case "c":
                  for (c && s.push(i("i8")); --h > 0;) s.push(32);
                  c || s.push(i("i8"));
                  break;
                case "n":
                  var D = i("i32*");
                  HEAP32[D >> 2] = s.length;
                  break;
                case "%":
                  s.push(o);
                  break;
                default:
                  for (F = l; F < t + 2; F++) s.push(HEAP8[F])
              }
              t += 2
            } else s.push(o),
              t += 1
          }
          return s
        }
        function _fprintf(e, r, t) {
          var n = __formatString(r, t),
            i = Runtime.stackSave(),
            o = _fwrite(allocate(n, "i8", ALLOC_STACK), 1, n.length, e);
          return Runtime.stackRestore(i),
            o
        }
        function _llvm_stacksave() {
          var e = _llvm_stacksave;
          return e.LLVM_SAVEDSTACKS || (e.LLVM_SAVEDSTACKS = []),
            e.LLVM_SAVEDSTACKS.push(Runtime.stackSave()),
            e.LLVM_SAVEDSTACKS.length - 1
        }
        Module._strlen = _strlen;
        var _llvm_memcpy_p0i8_p0i8_i32 = _memcpy;
        function _llvm_stackrestore(e) {
          var r = _llvm_stacksave,
            t = r.LLVM_SAVEDSTACKS[e];
          r.LLVM_SAVEDSTACKS.splice(e, 1),
            Runtime.stackRestore(t)
        }
        Module._memset = _memset;
        var _llvm_memset_p0i8_i32 = _memset,
          _sqrt = Math_sqrt,
          _sqrtf = Math_sqrt,
          _acos = Math_acos,
          _fabsf = Math_abs,
          _floor = Math_floor,
          _log = Math_log,
          _exp = Math_exp;
        function __exit(e) {
          Module.exit(e)
        }
        function _exit(e) {
          __exit(e)
        }
        var _llvm_memset_p0i8_i64 = _memset,
          _floorf = Math_floor;
        function _fputc(e, r) {
          var t = unSign(255 & e);
          if (HEAP8[0 | _fputc.ret] = t, -1 == _write(r, _fputc.ret, 1)) {
            var n = FS.getStream(r);
            return n && (n.error = !0),
              -1
          }
          return t
        }
        var _llvm_pow_f64 = Math_pow,
          _fabs = Math_abs;
        function _abort() {
          Module.abort()
        }
        function ___errno_location() {
          return ___errno_state
        }
        function _sbrk(e) {
          var r = _sbrk;
          r.called || (DYNAMICTOP = alignMemoryPage(DYNAMICTOP), r.called = !0, assert(Runtime.dynamicAlloc), r.alloc = Runtime.dynamicAlloc, Runtime.dynamicAlloc = function () {
            abort("cannot dynamically allocate, sbrk now has control")
          });
          var t = DYNAMICTOP;
          return 0 != e && r.alloc(e),
            t
        }
        function _sysconf(e) {
          switch (e) {
            case 30:
              return PAGE_SIZE;
            case 132:
            case 133:
            case 12:
            case 137:
            case 138:
            case 15:
            case 235:
            case 16:
            case 17:
            case 18:
            case 19:
            case 20:
            case 149:
            case 13:
            case 10:
            case 236:
            case 153:
            case 9:
            case 21:
            case 22:
            case 159:
            case 154:
            case 14:
            case 77:
            case 78:
            case 139:
            case 80:
            case 81:
            case 79:
            case 82:
            case 68:
            case 67:
            case 164:
            case 11:
            case 29:
            case 47:
            case 48:
            case 95:
            case 52:
            case 51:
            case 46:
              return 200809;
            case 27:
            case 246:
            case 127:
            case 128:
            case 23:
            case 24:
            case 160:
            case 161:
            case 181:
            case 182:
            case 242:
            case 183:
            case 184:
            case 243:
            case 244:
            case 245:
            case 165:
            case 178:
            case 179:
            case 49:
            case 50:
            case 168:
            case 169:
            case 175:
            case 170:
            case 171:
            case 172:
            case 97:
            case 76:
            case 32:
            case 173:
            case 35:
              return - 1;
            case 176:
            case 177:
            case 7:
            case 155:
            case 8:
            case 157:
            case 125:
            case 126:
            case 92:
            case 93:
            case 129:
            case 130:
            case 131:
            case 94:
            case 91:
              return 1;
            case 74:
            case 60:
            case 69:
            case 70:
            case 4:
              return 1024;
            case 31:
            case 42:
            case 72:
              return 32;
            case 87:
            case 26:
            case 33:
              return 2147483647;
            case 34:
            case 1:
              return 47839;
            case 38:
            case 36:
              return 99;
            case 43:
            case 37:
              return 2048;
            case 0:
              return 2097152;
            case 3:
              return 65536;
            case 28:
              return 32768;
            case 44:
              return 32767;
            case 75:
              return 16384;
            case 39:
              return 1e3;
            case 89:
              return 700;
            case 71:
              return 256;
            case 40:
              return 255;
            case 2:
              return 100;
            case 180:
              return 64;
            case 25:
              return 20;
            case 5:
              return 16;
            case 6:
              return 6;
            case 73:
              return 4;
            case 84:
              return 1
          }
          return ___setErrNo(ERRNO_CODES.EINVAL),
            -1
        }
        function _time(e) {
          var r = Math.floor(Date.now() / 1e3);
          return e && (HEAP32[e >> 2] = r),
            r
        }
        var Browser = {
          mainLoop: {
            scheduler: null,
            shouldPause: !1,
            paused: !1,
            queue: [],
            pause: function () {
              Browser.mainLoop.shouldPause = !0
            },
            resume: function () {
              Browser.mainLoop.paused && (Browser.mainLoop.paused = !1, Browser.mainLoop.scheduler()),
                Browser.mainLoop.shouldPause = !1
            },
            updateStatus: function () {
              if (Module.setStatus) {
                var e = Module.statusMessage || "Please wait...",
                  r = Browser.mainLoop.remainingBlockers,
                  t = Browser.mainLoop.expectedBlockers;
                r ? r < t ? Module.setStatus(e + " (" + (t - r) + "/" + t + ")") : Module.setStatus(e) : Module.setStatus("")
              }
            }
          },
          isFullScreen: !1,
          pointerLock: !1,
          moduleContextCreatedCallbacks: [],
          workers: [],
          init: function () {
            if (Module.preloadPlugins || (Module.preloadPlugins = []), !Browser.initted && !ENVIRONMENT_IS_WORKER) {
              Browser.initted = !0;
              try {
                new Blob,
                  Browser.hasBlobConstructor = !0
              } catch (e) {
                Browser.hasBlobConstructor = !1,
                  console.log("warning: no blob constructor, cannot create blobs with mimetypes")
              }
              Browser.BlobBuilder = "undefined" != typeof MozBlobBuilder ? MozBlobBuilder : "undefined" != typeof WebKitBlobBuilder ? WebKitBlobBuilder : Browser.hasBlobConstructor ? null : console.log("warning: no BlobBuilder"),
                Browser.URLObject = "undefined" != typeof window ? window.URL ? window.URL : window.webkitURL : void 0,
                Module.noImageDecoding || void 0 !== Browser.URLObject || (console.log("warning: Browser does not support creating object URLs. Built-in browser image decoding will not be available."), Module.noImageDecoding = !0);
              var e = {
                canHandle: function (e) {
                  return !Module.noImageDecoding && /\.(jpg|jpeg|png|bmp)$/i.test(e)
                },
                handle: function (e, r, t, n) {
                  var i = null;
                  if (Browser.hasBlobConstructor) try {
                    (i = new Blob([e], {
                      type: Browser.getMimetype(r)
                    })).size !== e.length && (i = new Blob([new Uint8Array(e).buffer], {
                      type: Browser.getMimetype(r)
                    }))
                  } catch (e) {
                    Runtime.warnOnce("Blob constructor present but fails: " + e + "; falling back to blob builder")
                  }
                  if (!i) {
                    var o = new Browser.BlobBuilder;
                    o.append(new Uint8Array(e).buffer),
                      i = o.getBlob()
                  }
                  var a = Browser.URLObject.createObjectURL(i),
                    s = new Image;
                  s.onload = function () {
                    assert(s.complete, "Image " + r + " could not be decoded");
                    var n = document.createElement("canvas");
                    n.width = s.width,
                      n.height = s.height,
                      n.getContext("2d").drawImage(s, 0, 0),
                      Module.preloadedImages[r] = n,
                      Browser.URLObject.revokeObjectURL(a),
                      t && t(e)
                  },
                    s.onerror = function (e) {
                      console.log("Image " + a + " could not be decoded"),
                        n && n()
                    },
                    s.src = a
                }
              };
              Module.preloadPlugins.push(e);
              var r = {
                canHandle: function (e) {
                  return !Module.noAudioDecoding && e.substr(- 4) in {
                    ".ogg": 1,
                    ".wav": 1,
                    ".mp3": 1
                  }
                },
                handle: function (e, r, t, n) {
                  var i = !1;
                  function o(n) {
                    i || (i = !0, Module.preloadedAudios[r] = n, t && t(e))
                  }
                  function a() {
                    i || (i = !0, Module.preloadedAudios[r] = new Audio, n && n())
                  }
                  if (!Browser.hasBlobConstructor) return a();
                  try {
                    var s = new Blob([e], {
                      type: Browser.getMimetype(r)
                    })
                  } catch (e) {
                    return a()
                  }
                  var l = Browser.URLObject.createObjectURL(s),
                    u = new Audio;
                  u.addEventListener("canplaythrough",
                    function () {
                      o(u)
                    },
                    !1),
                    u.onerror = function (t) {
                      i || (console.log("warning: browser could not fully decode audio " + r + ", trying slower base64 approach"), u.src = "data:audio/x-" + r.substr(- 3) + ";base64," +
                        function (e) {
                          for (var r = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
                            t = "",
                            n = 0,
                            i = 0,
                            o = 0; o < e.length; o++) for (n = n << 8 | e[o], i += 8; i >= 6;) {
                              var a = n >> i - 6 & 63;
                              i -= 6,
                                t += r[a]
                            }
                          return 2 == i ? (t += r[(3 & n) << 4], t += "==") : 4 == i && (t += r[(15 & n) << 2], t += "="),
                            t
                        }(e), o(u))
                    },
                    u.src = l,
                    Browser.safeSetTimeout(function () {
                      o(u)
                    },
                      1e4)
                }
              };
              Module.preloadPlugins.push(r);
              var t = Module.canvas;
              t.requestPointerLock = t.requestPointerLock || t.mozRequestPointerLock || t.webkitRequestPointerLock,
                t.exitPointerLock = document.exitPointerLock || document.mozExitPointerLock || document.webkitExitPointerLock ||
                function () { },
                t.exitPointerLock = t.exitPointerLock.bind(document),
                document.addEventListener("pointerlockchange", n, !1),
                document.addEventListener("mozpointerlockchange", n, !1),
                document.addEventListener("webkitpointerlockchange", n, !1),
                Module.elementPointerLock && t.addEventListener("click",
                  function (e) {
                    !Browser.pointerLock && t.requestPointerLock && (t.requestPointerLock(), e.preventDefault())
                  },
                  !1)
            }
            function n() {
              Browser.pointerLock = document.pointerLockElement === t || document.mozPointerLockElement === t || document.webkitPointerLockElement === t
            }
          },
          createContext: function (e, r, t, n) {
            var i;
            try {
              if (r) {
                var o = {
                  antialias: !1,
                  alpha: !1
                };
                if (n) for (var a in n) o[a] = n[a];["experimental-webgl", "webgl"].some(function (r) {
                  return i = e.getContext(r, o)
                })
              } else i = e.getContext("2d");
              if (!i) throw ":("
            } catch (e) {
              return Module.print("Could not create canvas - " + e),
                null
            }
            return r && (e.style.backgroundColor = "black", e.addEventListener("webglcontextlost",
              function (e) {
                console.log("WebGL context lost. You will need to reload the page.")
              },
              !1)),
              t && (Module.ctx = i, Module.useWebGL = r, Browser.moduleContextCreatedCallbacks.forEach(function (e) {
                e()
              }), Browser.init()),
              i
          },
          destroyContext: function (e, r, t) { },
          fullScreenHandlersInstalled: !1,
          lockPointer: void 0,
          resizeCanvas: void 0,
          requestFullScreen: function (e, r) {
            Browser.lockPointer = e,
              Browser.resizeCanvas = r,
              void 0 === Browser.lockPointer && (Browser.lockPointer = !0),
              void 0 === Browser.resizeCanvas && (Browser.resizeCanvas = !1);
            var t = Module.canvas;
            function n() {
              Browser.isFullScreen = !1,
                (document.webkitFullScreenElement || document.webkitFullscreenElement || document.mozFullScreenElement || document.mozFullscreenElement || document.fullScreenElement || document.fullscreenElement) === t ? (t.cancelFullScreen = document.cancelFullScreen || document.mozCancelFullScreen || document.webkitCancelFullScreen, t.cancelFullScreen = t.cancelFullScreen.bind(document), Browser.lockPointer && t.requestPointerLock(), Browser.isFullScreen = !0, Browser.resizeCanvas && Browser.setFullScreenCanvasSize()) : Browser.resizeCanvas && Browser.setWindowedCanvasSize(),
                Module.onFullScreen && Module.onFullScreen(Browser.isFullScreen)
            }
            Browser.fullScreenHandlersInstalled || (Browser.fullScreenHandlersInstalled = !0, document.addEventListener("fullscreenchange", n, !1), document.addEventListener("mozfullscreenchange", n, !1), document.addEventListener("webkitfullscreenchange", n, !1)),
              t.requestFullScreen = t.requestFullScreen || t.mozRequestFullScreen || (t.webkitRequestFullScreen ?
                function () {
                  t.webkitRequestFullScreen(Element.ALLOW_KEYBOARD_INPUT)
                } : null),
              t.requestFullScreen()
          },
          requestAnimationFrame: function (e) {
            "undefined" == typeof window ? setTimeout(e, 1e3 / 60) : (window.requestAnimationFrame || (window.requestAnimationFrame = window.requestAnimationFrame || window.mozRequestAnimationFrame || window.webkitRequestAnimationFrame || window.msRequestAnimationFrame || window.oRequestAnimationFrame || window.setTimeout), window.requestAnimationFrame(e))
          },
          safeCallback: function (e) {
            return function () {
              if (!ABORT) return e.apply(null, arguments)
            }
          },
          safeRequestAnimationFrame: function (e) {
            return Browser.requestAnimationFrame(function () {
              ABORT || e()
            })
          },
          safeSetTimeout: function (e, r) {
            return setTimeout(function () {
              ABORT || e()
            },
              r)
          },
          safeSetInterval: function (e, r) {
            return setInterval(function () {
              ABORT || e()
            },
              r)
          },
          getMimetype: function (e) {
            return {
              jpg: "image/jpeg",
              jpeg: "image/jpeg",
              png: "image/png",
              bmp: "image/bmp",
              ogg: "audio/ogg",
              wav: "audio/wav",
              mp3: "audio/mpeg"
            }[e.substr(e.lastIndexOf(".") + 1)]
          },
          getUserMedia: function (e) {
            window.getUserMedia || (window.getUserMedia = navigator.getUserMedia || navigator.mozGetUserMedia),
              window.getUserMedia(e)
          },
          getMovementX: function (e) {
            return e.movementX || e.mozMovementX || e.webkitMovementX || 0
          },
          getMovementY: function (e) {
            return e.movementY || e.mozMovementY || e.webkitMovementY || 0
          },
          mouseX: 0,
          mouseY: 0,
          mouseMovementX: 0,
          mouseMovementY: 0,
          calculateMouseEvent: function (e) {
            if (Browser.pointerLock) "mousemove" != e.type && "mozMovementX" in e ? Browser.mouseMovementX = Browser.mouseMovementY = 0 : (Browser.mouseMovementX = Browser.getMovementX(e), Browser.mouseMovementY = Browser.getMovementY(e)),
              "undefined" != typeof SDL ? (Browser.mouseX = SDL.mouseX + Browser.mouseMovementX, Browser.mouseY = SDL.mouseY + Browser.mouseMovementY) : (Browser.mouseX += Browser.mouseMovementX, Browser.mouseY += Browser.mouseMovementY);
            else {
              var r, t, n = Module.canvas.getBoundingClientRect();
              if ("touchstart" == e.type || "touchend" == e.type || "touchmove" == e.type) {
                var i = e.touches.item(0);
                if (!i) return;
                r = i.pageX - (window.scrollX + n.left),
                  t = i.pageY - (window.scrollY + n.top)
              } else r = e.pageX - (window.scrollX + n.left),
                t = e.pageY - (window.scrollY + n.top);
              var o = Module.canvas.width,
                a = Module.canvas.height;
              r *= o / n.width,
                t *= a / n.height,
                Browser.mouseMovementX = r - Browser.mouseX,
                Browser.mouseMovementY = t - Browser.mouseY,
                Browser.mouseX = r,
                Browser.mouseY = t
            }
          },
          xhrLoad: function (e, r, t) {
            var n = new XMLHttpRequest;
            n.open("GET", e, !0),
              n.responseType = "arraybuffer",
              n.onload = function () {
                200 == n.status || 0 == n.status && n.response ? r(n.response) : t()
              },
              n.onerror = t,
              n.send(null)
          },
          asyncLoad: function (e, r, t, n) {
            Browser.xhrLoad(e,
              function (t) {
                assert(t, 'Loading data file "' + e + '" failed (no arrayBuffer).'),
                  r(new Uint8Array(t)),
                  n || removeRunDependency("al " + e)
              },
              function (r) {
                if (!t) throw 'Loading data file "' + e + '" failed.';
                t()
              }),
              n || addRunDependency("al " + e)
          },
          resizeListeners: [],
          updateResizeListeners: function () {
            var e = Module.canvas;
            Browser.resizeListeners.forEach(function (r) {
              r(e.width, e.height)
            })
          },
          setCanvasSize: function (e, r, t) {
            var n = Module.canvas;
            n.width = e,
              n.height = r,
              t || Browser.updateResizeListeners()
          },
          windowedWidth: 0,
          windowedHeight: 0,
          setFullScreenCanvasSize: function () {
            var e = Module.canvas;
            if (this.windowedWidth = e.width, this.windowedHeight = e.height, e.width = screen.width, e.height = screen.height, "undefined" != typeof SDL) {
              var r = HEAPU32[SDL.screen + 0 * Runtime.QUANTUM_SIZE >> 2];
              r |= 8388608,
                HEAP32[SDL.screen + 0 * Runtime.QUANTUM_SIZE >> 2] = r
            }
            Browser.updateResizeListeners()
          },
          setWindowedCanvasSize: function () {
            var e = Module.canvas;
            if (e.width = this.windowedWidth, e.height = this.windowedHeight, "undefined" != typeof SDL) {
              var r = HEAPU32[SDL.screen + 0 * Runtime.QUANTUM_SIZE >> 2];
              r &= -8388609,
                HEAP32[SDL.screen + 0 * Runtime.QUANTUM_SIZE >> 2] = r
            }
            Browser.updateResizeListeners()
          }
        };
        if (FS.staticInit(), __ATINIT__.unshift({
          func: function () {
            Module.noFSInit || FS.init.initialized || FS.init()
          }
        }), __ATMAIN__.push({
          func: function () {
            FS.ignorePermissions = !1
          }
        }), __ATEXIT__.push({
          func: function () {
            FS.quit()
          }
        }), Module.FS_createFolder = FS.createFolder, Module.FS_createPath = FS.createPath, Module.FS_createDataFile = FS.createDataFile, Module.FS_createPreloadedFile = FS.createPreloadedFile, Module.FS_createLazyFile = FS.createLazyFile, Module.FS_createLink = FS.createLink, Module.FS_createDevice = FS.createDevice, ___errno_state = Runtime.staticAlloc(4), HEAP32[___errno_state >> 2] = 0, __ATINIT__.unshift({
          func: function () {
            TTY.init()
          }
        }), __ATEXIT__.push({
          func: function () {
            TTY.shutdown()
          }
        }), TTY.utf8 = new Runtime.UTF8Processor, ENVIRONMENT_IS_NODE) {
          var fs = __webpack_require__(3);
          NODEFS.staticInit()
        }
        __ATINIT__.push({
          func: function () {
            SOCKFS.root = FS.mount(SOCKFS, {},
              null)
          }
        }),
          _fputc.ret = allocate([0], "i8", ALLOC_STATIC),
          Module.requestFullScreen = function (e, r) {
            Browser.requestFullScreen(e, r)
          },
          Module.requestAnimationFrame = function (e) {
            Browser.requestAnimationFrame(e)
          },
          Module.setCanvasSize = function (e, r, t) {
            Browser.setCanvasSize(e, r, t)
          },
          Module.pauseMainLoop = function () {
            Browser.mainLoop.pause()
          },
          Module.resumeMainLoop = function () {
            Browser.mainLoop.resume()
          },
          Module.getUserMedia = function () {
            Browser.getUserMedia()
          },
          STACK_BASE = STACKTOP = Runtime.alignMemory(STATICTOP),
          staticSealed = !0,
          STACK_MAX = STACK_BASE + 5242880,
          DYNAMIC_BASE = DYNAMICTOP = Runtime.alignMemory(STACK_MAX),
          assert(DYNAMIC_BASE < TOTAL_MEMORY);
        var Math_min = Math.min;
        function invoke_viiiiiiiiiiiii(e, r, t, n, i, o, a, s, l, u, c, f, d, _) {
          try {
            Module.dynCall_viiiiiiiiiiiii(e, r, t, n, i, o, a, s, l, u, c, f, d, _)
          } catch (e) {
            if ("number" != typeof e && "longjmp" !== e) throw e;
            asm.setThrew(1, 0)
          }
        }
        function invoke_viiiiii(e, r, t, n, i, o, a) {
          try {
            Module.dynCall_viiiiii(e, r, t, n, i, o, a)
          } catch (e) {
            if ("number" != typeof e && "longjmp" !== e) throw e;
            asm.setThrew(1, 0)
          }
        }
        function invoke_vi(e, r) {
          try {
            Module.dynCall_vi(e, r)
          } catch (e) {
            if ("number" != typeof e && "longjmp" !== e) throw e;
            asm.setThrew(1, 0)
          }
        }
        function invoke_v(e) {
          try {
            Module.dynCall_v(e)
          } catch (e) {
            if ("number" != typeof e && "longjmp" !== e) throw e;
            asm.setThrew(1, 0)
          }
        }
        function invoke_iiii(e, r, t, n) {
          try {
            return Module.dynCall_iiii(e, r, t, n)
          } catch (e) {
            if ("number" != typeof e && "longjmp" !== e) throw e;
            asm.setThrew(1, 0)
          }
        }
        function invoke_ii(e, r) {
          try {
            return Module.dynCall_ii(e, r)
          } catch (e) {
            if ("number" != typeof e && "longjmp" !== e) throw e;
            asm.setThrew(1, 0)
          }
        }
        function invoke_viii(e, r, t, n) {
          try {
            Module.dynCall_viii(e, r, t, n)
          } catch (e) {
            if ("number" != typeof e && "longjmp" !== e) throw e;
            asm.setThrew(1, 0)
          }
        }
        function invoke_iiiiiiiiiifiiiiiiiiii(e, r, t, n, i, o, a, s, l, u, c, f, d, _, h, p, m, w, b, E, S) {
          try {
            return Module.dynCall_iiiiiiiiiifiiiiiiiiii(e, r, t, n, i, o, a, s, l, u, c, f, d, _, h, p, m, w, b, E, S)
          } catch (e) {
            if ("number" != typeof e && "longjmp" !== e) throw e;
            asm.setThrew(1, 0)
          }
        }
        function invoke_viiiifiiiiiiiifi(e, r, t, n, i, o, a, s, l, u, c, f, d, _, h, p) {
          try {
            Module.dynCall_viiiifiiiiiiiifi(e, r, t, n, i, o, a, s, l, u, c, f, d, _, h, p)
          } catch (e) {
            if ("number" != typeof e && "longjmp" !== e) throw e;
            asm.setThrew(1, 0)
          }
        }
        function invoke_iii(e, r, t) {
          try {
            return Module.dynCall_iii(e, r, t)
          } catch (e) {
            if ("number" != typeof e && "longjmp" !== e) throw e;
            asm.setThrew(1, 0)
          }
        }
        function invoke_viiii(e, r, t, n, i) {
          try {
            Module.dynCall_viiii(e, r, t, n, i)
          } catch (e) {
            if ("number" != typeof e && "longjmp" !== e) throw e;
            asm.setThrew(1, 0)
          }
        }
        function asmPrintInt(e, r) {
          Module.print("int " + e + "," + r)
        }
        function asmPrintFloat(e, r) {
          Module.print("float " + e + "," + r)
        }
        var asm = function (e, r, t) {
          "use asm";
          var n = new e.Int8Array(t);
          var i = new e.Int16Array(t);
          var o = new e.Int32Array(t);
          var a = new e.Uint8Array(t);
          var s = new e.Uint16Array(t);
          var l = new e.Uint32Array(t);
          var u = new e.Float32Array(t);
          var c = new e.Float64Array(t);
          var f = r.STACKTOP | 0;
          var d = r.STACK_MAX | 0;
          var _ = r.tempDoublePtr | 0;
          var h = r.ABORT | 0;
          var p = r._stderr | 0;
          var m = +r.NaN;
          var w = +r.Infinity;
          var b = 0;
          var E = 0;
          var S = 0;
          var v = 0;
          var k = 0,
            g = 0,
            y = 0,
            M = 0,
            F = 0.0,
            A = 0,
            T = 0,
            O = 0,
            R = 0.0;
          var C = 0;
          var N = 0;
          var P = 0;
          var x = 0;
          var D = 0;
          var I = 0;
          var L = 0;
          var B = 0;
          var U = 0;
          var q = 0;
          var H = e.Math.floor;
          var z = e.Math.abs;
          var V = e.Math.sqrt;
          var j = e.Math.pow;
          var X = e.Math.cos;
          var K = e.Math.sin;
          var Y = e.Math.tan;
          var W = e.Math.acos;
          var G = e.Math.asin;
          var Q = e.Math.atan;
          var Z = e.Math.atan2;
          var J = e.Math.exp;
          var $ = e.Math.log;
          var ee = e.Math.ceil;
          var re = e.Math.imul;
          var te = r.abort;
          var ne = r.assert;
          var ie = r.asmPrintInt;
          var oe = r.asmPrintFloat;
          var ae = r.min;
          var se = r.invoke_viiiiiiiiiiiii;
          var le = r.invoke_viiiiii;
          var ue = r.invoke_vi;
          var ce = r.invoke_v;
          var fe = r.invoke_iiii;
          var de = r.invoke_ii;
          var _e = r.invoke_viii;
          var he = r.invoke_iiiiiiiiiifiiiiiiiiii;
          var pe = r.invoke_viiiifiiiiiiiifi;
          var me = r.invoke_iii;
          var we = r.invoke_viiii;
          var be = r._fabsf;
          var Ee = r._floorf;
          var Se = r._abort;
          var ve = r._fprintf;
          var ke = r._sqrt;
          var ge = r._fflush;
          var ye = r.__reallyNegative;
          var Me = r._sqrtf;
          var Fe = r._fputc;
          var Ae = r._log;
          var Te = r._fabs;
          var Oe = r._floor;
          var Re = r.___setErrNo;
          var Ce = r._fwrite;
          var Ne = r._send;
          var Pe = r._write;
          var xe = r._exit;
          var De = r._sysconf;
          var Ie = r.__exit;
          var Le = r.__formatString;
          var Be = r._llvm_stackrestore;
          var Ue = r._pwrite;
          var qe = r._llvm_pow_f64;
          var He = r._sbrk;
          var ze = r._llvm_stacksave;
          var Ve = r.___errno_location;
          var je = r._exp;
          var Xe = r._time;
          var Ke = r._acos;
          var Ye = 0.0;
          function We(e) {
            e = e | 0;
            var r = 0;
            r = f;
            f = f + e | 0;
            f = f + 7 & -8;
            return r | 0
          }
          function Ge() {
            return f | 0
          }
          function Qe(e) {
            e = e | 0;
            f = e
          }
          function Ze(e, r) {
            e = e | 0;
            r = r | 0;
            if ((b | 0) == 0) {
              b = e;
              E = r
            }
          }
          function Je(e) {
            e = e | 0;
            n[_] = n[e];
            n[_ + 1 | 0] = n[e + 1 | 0];
            n[_ + 2 | 0] = n[e + 2 | 0];
            n[_ + 3 | 0] = n[e + 3 | 0]
          }
          function $e(e) {
            e = e | 0;
            n[_] = n[e];
            n[_ + 1 | 0] = n[e + 1 | 0];
            n[_ + 2 | 0] = n[e + 2 | 0];
            n[_ + 3 | 0] = n[e + 3 | 0];
            n[_ + 4 | 0] = n[e + 4 | 0];
            n[_ + 5 | 0] = n[e + 5 | 0];
            n[_ + 6 | 0] = n[e + 6 | 0];
            n[_ + 7 | 0] = n[e + 7 | 0]
          }
          function er(e) {
            e = e | 0;
            C = e
          }
          function rr(e) {
            e = e | 0;
            N = e
          }
          function tr(e) {
            e = e | 0;
            P = e
          }
          function nr(e) {
            e = e | 0;
            x = e
          }
          function ir(e) {
            e = e | 0;
            D = e
          }
          function or(e) {
            e = e | 0;
            I = e
          }
          function ar(e) {
            e = e | 0;
            L = e
          }
          function sr(e) {
            e = e | 0;
            B = e
          }
          function lr(e) {
            e = e | 0;
            U = e
          }
          function ur(e) {
            e = e | 0;
            q = e
          }
          function cr() { }
          function fr(e) {
            e = e | 0;
            var r = 0;
            r = Cn(2e3, 1) | 0;
            o[e >> 2] = r;
            if ((r | 0) == 0) {
              return
            }
            o[e + 24 >> 2] = 2e3;
            o[e + 16 >> 2] = 1;
            n[r] = 0;
            o[e + 4 >> 2] = 0;
            o[e + 8 >> 2] = 0;
            o[e + 12 >> 2] = 0;
            o[e + 20 >> 2] = 0;
            return
          }
          function dr(e) {
            e = e | 0;
            n[o[e >> 2] | 0] = 0;
            o[e + 4 >> 2] = 0;
            o[e + 8 >> 2] = 0;
            o[e + 12 >> 2] = 0;
            o[e + 20 >> 2] = 0;
            return
          }
          function _r(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            o[e >> 2] = r;
            o[e + 24 >> 2] = t;
            o[e + 16 >> 2] = 0;
            n[r] = 0;
            o[e + 4 >> 2] = 0;
            o[e + 8 >> 2] = 0;
            o[e + 12 >> 2] = 0;
            o[e + 20 >> 2] = 0;
            return
          }
          function hr(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            o[e >> 2] = r;
            o[e + 24 >> 2] = t;
            o[e + 16 >> 2] = 0;
            o[e + 4 >> 2] = t << 3;
            o[e + 8 >> 2] = 0;
            o[e + 12 >> 2] = 0;
            o[e + 20 >> 2] = 0;
            return
          }
          function pr(e) {
            e = e | 0;
            if ((o[e + 16 >> 2] | 0) == 0) {
              return
            }
            Rn(o[e >> 2] | 0);
            return
          }
          function mr(e) {
            e = e | 0;
            o[e + 8 >> 2] = 0;
            o[e + 12 >> 2] = 0;
            o[e + 20 >> 2] = 0;
            return
          }
          function wr(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0;
            i = f;
            a = e + 24 | 0;
            do {
              if ((o[a >> 2] | 0) < (t | 0)) {
                s = o[p >> 2] | 0;
                ve(s | 0, 12744, (l = f, f = f + 8 | 0, o[l >> 2] = 14152, l) | 0) | 0;
                f = l;
                if ((o[e + 16 >> 2] | 0) == 0) {
                  ve(s | 0, 12864, (l = f, f = f + 8 | 0, o[l >> 2] = 13712, l) | 0) | 0;
                  f = l;
                  u = o[a >> 2] | 0;
                  break
                }
                c = e | 0;
                d = Nn(o[c >> 2] | 0, t) | 0;
                if ((d | 0) == 0) {
                  _ = o[a >> 2] | 0;
                  ve(s | 0, 12864, (l = f, f = f + 8 | 0, o[l >> 2] = 14104, l) | 0) | 0;
                  f = l;
                  u = _;
                  break
                } else {
                  o[a >> 2] = t;
                  o[c >> 2] = d;
                  u = t;
                  break
                }
              } else {
                u = t
              }
            } while (0);
            if ((u | 0) <= 0) {
              h = u << 3;
              m = e + 4 | 0;
              o[m >> 2] = h;
              w = e + 8 | 0;
              o[w >> 2] = 0;
              b = e + 12 | 0;
              o[b >> 2] = 0;
              E = e + 20 | 0;
              o[E >> 2] = 0;
              f = i;
              return
            }
            t = e | 0;
            a = 0;
            do {
              n[(o[t >> 2] | 0) + a | 0] = n[r + a | 0] | 0;
              a = a + 1 | 0
            } while ((a | 0) < (u | 0));
            h = u << 3;
            m = e + 4 | 0;
            o[m >> 2] = h;
            w = e + 8 | 0;
            o[w >> 2] = 0;
            b = e + 12 | 0;
            o[b >> 2] = 0;
            E = e + 20 | 0;
            o[E >> 2] = 0;
            f = i;
            return
          }
          function br(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0,
              v = 0;
            i = f;
            a = e + 4 | 0;
            s = o[a >> 2] | 0;
            l = e + 24 | 0;
            do {
              if (((s + 7 >> 3) + t | 0) > (o[l >> 2] | 0)) {
                if ((o[e + 16 >> 2] | 0) == 0) {
                  u = o[p >> 2] | 0;
                  ve(u | 0, 12864, (c = f, f = f + 8 | 0, o[c >> 2] = 13712, c) | 0) | 0;
                  f = c;
                  d = o[l >> 2] | 0;
                  break
                }
                u = e | 0;
                _ = t + 1 | 0;
                h = Nn(o[u >> 2] | 0, _ + (s >> 3) | 0) | 0;
                if ((h | 0) == 0) {
                  m = (o[l >> 2] | 0) - 1 - (o[a >> 2] >> 3) | 0;
                  w = o[p >> 2] | 0;
                  ve(w | 0, 12864, (c = f, f = f + 8 | 0, o[c >> 2] = 13480, c) | 0) | 0;
                  f = c;
                  d = m;
                  break
                } else {
                  o[l >> 2] = _ + (o[a >> 2] >> 3);
                  o[u >> 2] = h;
                  d = t;
                  break
                }
              } else {
                d = t
              }
            } while (0);
            t = e + 8 | 0;
            l = o[t >> 2] | 0;
            if ((l | 0) > 0) {
              c = o[e >> 2] | 0;
              Qn(c | 0, c + l | 0, ((o[a >> 2] | 0) + 7 >> 3) - l | 0);
              b = o[t >> 2] | 0
            } else {
              b = l
            }
            l = (o[a >> 2] | 0) - (b << 3) | 0;
            o[a >> 2] = l;
            o[t >> 2] = 0;
            t = l >> 3;
            if ((d | 0) <= 0) {
              E = l;
              S = d << 3;
              v = E + S | 0;
              o[a >> 2] = v;
              f = i;
              return
            }
            l = e | 0;
            e = 0;
            do {
              n[(o[l >> 2] | 0) + (e + t) | 0] = n[r + e | 0] | 0;
              e = e + 1 | 0
            } while ((e | 0) < (d | 0));
            E = o[a >> 2] | 0;
            S = d << 3;
            v = E + S | 0;
            o[a >> 2] = v;
            f = i;
            return
          }
          function Er(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0;
            i = e + 12 | 0;
            a = o[i >> 2] | 0;
            s = e + 8 | 0;
            l = o[s >> 2] | 0;
            u = e + 4 | 0;
            c = o[u >> 2] | 0;
            do {
              if ((a | 0) != 0) {
                kr(e, 0, 1);
                if ((o[i >> 2] | 0) == 0) {
                  break
                }
                do {
                  kr(e, 1, 1)
                } while ((o[i >> 2] | 0) != 0)
              }
            } while (0);
            o[i >> 2] = a;
            o[s >> 2] = l;
            o[u >> 2] = c;
            u = c + 7 >> 3;
            c = (u | 0) < (t | 0) ? u : t;
            if ((c | 0) <= 0) {
              return c | 0
            }
            t = e | 0;
            e = 0;
            do {
              n[r + e | 0] = n[(o[t >> 2] | 0) + e | 0] | 0;
              e = e + 1 | 0
            } while ((e | 0) < (c | 0));
            return c | 0
          }
          function Sr(e) {
            e = e | 0;
            var r = 0;
            r = e + 12 | 0;
            if ((o[r >> 2] | 0) == 0) {
              return
            }
            kr(e, 0, 1);
            if ((o[r >> 2] | 0) == 0) {
              return
            }
            do {
              kr(e, 1, 1)
            } while ((o[r >> 2] | 0) != 0);
            return
          }
          function vr(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var i = 0,
              a = 0,
              s = 0,
              l = 0;
            i = e + 4 | 0;
            a = o[i >> 2] >> 3;
            s = (a | 0) < (t | 0) ? a : t;
            t = e | 0;
            if ((s | 0) > 0) {
              a = 0;
              do {
                n[r + a | 0] = n[(o[t >> 2] | 0) + a | 0] | 0;
                a = a + 1 | 0
              } while ((a | 0) < (s | 0))
            }
            a = o[t >> 2] | 0;
            if ((o[e + 12 >> 2] | 0) > 0) {
              l = n[a + s | 0] | 0
            } else {
              l = 0
            }
            n[a] = l;
            o[e + 8 >> 2] = 0;
            o[i >> 2] = o[i >> 2] & 7;
            return s | 0
          }
          function kr(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var i = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              m = 0;
            i = f;
            s = e + 8 | 0;
            l = e + 12 | 0;
            u = e + 24 | 0;
            do {
              if ((((o[l >> 2] | 0) + t >> 3) + (o[s >> 2] | 0) | 0) >= (o[u >> 2] | 0)) {
                c = o[p >> 2] | 0;
                ve(c | 0, 12744, (d = f, f = f + 8 | 0, o[d >> 2] = 13288, d) | 0) | 0;
                f = d;
                if ((o[e + 16 >> 2] | 0) == 0) {
                  ve(c | 0, 12864, (d = f, f = f + 8 | 0, o[d >> 2] = 12944, d) | 0) | 0;
                  f = d;
                  f = i;
                  return
                }
                _ = ((o[u >> 2] | 0) * 3 | 0) + 15 >> 1;
                h = e | 0;
                m = Nn(o[h >> 2] | 0, _) | 0;
                if ((m | 0) != 0) {
                  o[u >> 2] = _;
                  o[h >> 2] = m;
                  break
                }
                ve(c | 0, 12864, (d = f, f = f + 8 | 0, o[d >> 2] = 13144, d) | 0) | 0;
                f = d;
                f = i;
                return
              }
            } while (0);
            if ((t | 0) == 0) {
              f = i;
              return
            }
            u = e | 0;
            d = e + 4 | 0;
            e = t;
            do {
              e = e - 1 | 0;
              t = (o[u >> 2] | 0) + (o[s >> 2] | 0) | 0;
              n[t] = (a[t] | 0 | (r >>> (e >>> 0) & 1) << 7 - (o[l >> 2] | 0)) & 255;
              t = (o[l >> 2] | 0) + 1 | 0;
              o[l >> 2] = t;
              if ((t | 0) == 8) {
                o[l >> 2] = 0;
                t = (o[s >> 2] | 0) + 1 | 0;
                o[s >> 2] = t;
                n[(o[u >> 2] | 0) + t | 0] = 0
              }
              o[d >> 2] = (o[d >> 2] | 0) + 1
            } while ((e | 0) != 0);
            f = i;
            return
          }
          function gr(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              f = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0;
            t = e + 8 | 0;
            i = o[t >> 2] | 0;
            a = e + 12 | 0;
            s = o[a >> 2] | 0;
            l = e + 20 | 0;
            do {
              if ((s + r + (i << 3) | 0) > (o[e + 4 >> 2] | 0)) {
                o[l >> 2] = 1;
                u = 0
              } else {
                if ((o[l >> 2] | 0) != 0 | (r | 0) == 0) {
                  u = 0;
                  break
                }
                c = o[e >> 2] | 0;
                f = r;
                d = 0;
                _ = i;
                h = s;
                while (1) {
                  p = (n[c + _ | 0] | 0) >>> ((7 - h | 0) >>> 0) & 1 | d << 1;
                  m = h + 1 | 0;
                  o[a >> 2] = m;
                  if ((m | 0) == 8) {
                    o[a >> 2] = 0;
                    w = _ + 1 | 0;
                    o[t >> 2] = w;
                    b = w;
                    E = 0
                  } else {
                    b = _;
                    E = m
                  }
                  m = f - 1 | 0;
                  if ((m | 0) == 0) {
                    u = p;
                    break
                  } else {
                    f = m;
                    d = p;
                    _ = b;
                    h = E
                  }
                }
              }
            } while (0);
            if ((u >>> ((r - 1 | 0) >>> 0) | 0) == 0) {
              S = u;
              return S | 0
            }
            S = u | -1 << r;
            return S | 0
          }
          function yr(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              f = 0,
              d = 0,
              _ = 0,
              h = 0;
            t = e + 8 | 0;
            i = o[t >> 2] | 0;
            a = e + 12 | 0;
            s = o[a >> 2] | 0;
            l = e + 20 | 0;
            if ((s + r + (i << 3) | 0) > (o[e + 4 >> 2] | 0)) {
              o[l >> 2] = 1;
              u = 0;
              return u | 0
            }
            if ((o[l >> 2] | 0) != 0 | (r | 0) == 0) {
              u = 0;
              return u | 0
            }
            l = o[e >> 2] | 0;
            e = r;
            r = 0;
            c = i;
            i = s;
            while (1) {
              s = (n[l + c | 0] | 0) >>> ((7 - i | 0) >>> 0) & 1 | r << 1;
              f = i + 1 | 0;
              o[a >> 2] = f;
              if ((f | 0) == 8) {
                o[a >> 2] = 0;
                d = c + 1 | 0;
                o[t >> 2] = d;
                _ = d;
                h = 0
              } else {
                _ = c;
                h = f
              }
              f = e - 1 | 0;
              if ((f | 0) == 0) {
                u = s;
                break
              } else {
                e = f;
                r = s;
                c = _;
                i = h
              }
            }
            return u | 0
          }
          function Mr(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              f = 0;
            t = o[e + 8 >> 2] | 0;
            i = o[e + 12 >> 2] | 0;
            a = e + 20 | 0;
            if ((i + r + (t << 3) | 0) > (o[e + 4 >> 2] | 0)) {
              o[a >> 2] = 1;
              s = 0;
              return s | 0
            }
            if ((o[a >> 2] | 0) != 0) {
              s = 0;
              return s | 0
            }
            a = o[e >> 2] | 0;
            if ((r | 0) == 0) {
              s = 0;
              return s | 0
            } else {
              l = r;
              u = 0;
              c = i;
              f = t
            }
            while (1) {
              t = (n[a + f | 0] | 0) >>> ((7 - c | 0) >>> 0) & 1 | u << 1;
              i = c + 1 | 0;
              r = (i | 0) == 8;
              e = l - 1 | 0;
              if ((e | 0) == 0) {
                s = t;
                break
              } else {
                l = e;
                u = t;
                c = r ? 0 : i;
                f = (r & 1) + f | 0
              }
            }
            return s | 0
          }
          function Fr(e) {
            e = e | 0;
            var r = 0,
              t = 0,
              i = 0,
              a = 0;
            r = o[e + 8 >> 2] | 0;
            t = o[e + 12 >> 2] | 0;
            i = e + 20 | 0;
            if ((t + 1 + (r << 3) | 0) > (o[e + 4 >> 2] | 0)) {
              o[i >> 2] = 1;
              a = 0;
              return a | 0
            }
            if ((o[i >> 2] | 0) != 0) {
              a = 0;
              return a | 0
            }
            a = (n[(o[e >> 2] | 0) + r | 0] | 0) >>> ((7 - t | 0) >>> 0) & 1;
            return a | 0
          }
          function Ar(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              n = 0,
              i = 0,
              a = 0;
            t = e + 8 | 0;
            n = o[t >> 2] | 0;
            i = e + 12 | 0;
            a = (o[i >> 2] | 0) + r | 0;
            r = e + 20 | 0;
            do {
              if ((a + (n << 3) | 0) <= (o[e + 4 >> 2] | 0)) {
                if ((o[r >> 2] | 0) != 0) {
                  break
                }
                o[t >> 2] = (a >> 3) + n;
                o[i >> 2] = a & 7;
                return
              }
            } while (0);
            o[r >> 2] = 1;
            return
          }
          function Tr(e) {
            e = e | 0;
            var r = 0;
            if ((o[e + 20 >> 2] | 0) != 0) {
              r = -1;
              return r | 0
            }
            r = (o[e + 4 >> 2] | 0) - (o[e + 12 >> 2] | 0) - (o[e + 8 >> 2] << 3) | 0;
            return r | 0
          }
          function Or(e) {
            e = e | 0;
            return (o[e + 4 >> 2] | 0) + 7 >> 3 | 0
          }
          function Rr(e, r, t, i, a, s, l, c, d, _, h, p, m) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            i = i | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            c = c | 0;
            d = d | 0;
            _ = _ | 0;
            h = h | 0;
            p = p | 0;
            m = m | 0;
            var w = 0,
              b = 0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0,
              y = 0,
              M = 0,
              F = 0,
              A = 0,
              T = 0,
              O = 0,
              R = 0,
              C = 0,
              N = 0,
              P = 0,
              x = 0,
              D = 0,
              I = 0,
              L = 0,
              B = 0,
              U = 0,
              q = 0,
              H = 0,
              z = 0,
              V = 0,
              j = 0,
              X = 0,
              K = 0,
              Y = 0,
              W = 0,
              G = 0,
              Q = 0,
              Z = 0,
              J = 0,
              $ = 0,
              ee = 0,
              te = 0,
              ne = 0,
              ie = 0,
              oe = 0.0,
              ae = 0,
              se = 0.0,
              le = 0.0,
              ue = 0.0,
              ce = 0,
              fe = 0,
              de = 0,
              _e = 0,
              he = 0,
              pe = 0,
              me = 0,
              we = 0,
              be = 0;
            w = f;
            b = (p | 0) > 10 ? 20 : p << 1;
            p = (b | 0) < 3 ? 1 : (b | 0) / 3 | 0;
            if ((p | 0) == 1) {
              Cr(e, r, t, i, a, s, l, c, d, _, h, m);
              f = w;
              return
            }
            b = ze() | 0;
            E = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            S = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            v = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            k = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            g = o[a >> 2] | 0;
            y = o[a + 4 >> 2] | 0;
            M = a + 12 | 0;
            F = o[M >> 2] | 0;
            A = 1 << F;
            T = o[a + 8 >> 2] | 0;
            O = o[a + 16 >> 2] | 0;
            a = f;
            f = f + ((g << F) * 4 | 0) | 0;
            f = f + 7 & -8;
            F = f;
            f = f + (A * 4 | 0) | 0;
            f = f + 7 & -8;
            R = f;
            f = f + (l * 4 | 0) | 0;
            f = f + 7 & -8;
            C = f;
            f = f + (l * 4 | 0) | 0;
            f = f + 7 & -8;
            N = C;
            P = f;
            f = f + (y * 4 | 0) | 0;
            f = f + 7 & -8;
            x = p << 1;
            D = re(x, l) | 0;
            I = f;
            f = f + (D * 4 | 0) | 0;
            f = f + 7 & -8;
            D = (p | 0) > 0;
            if (D) {
              L = 0;
              do {
                B = L << 1;
                o[E + (L << 2) >> 2] = I + ((re(B, l) | 0) << 2);
                o[S + (L << 2) >> 2] = I + ((re(B | 1, l) | 0) << 2);
                L = L + 1 | 0
              } while ((L | 0) < (p | 0))
            }
            L = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            I = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            B = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            U = B;
            q = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            H = q;
            z = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            V = z;
            j = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            X = j;
            K = re(y, x) | 0;
            x = f;
            f = f + (K * 4 | 0) | 0;
            f = f + 7 & -8;
            do {
              if (D) {
                K = 0;
                do {
                  Y = K << 1;
                  o[k + (K << 2) >> 2] = x + ((re(Y, y) | 0) << 2);
                  o[v + (K << 2) >> 2] = x + ((re(Y | 1, y) | 0) << 2);
                  K = K + 1 | 0
                } while ((K | 0) < (p | 0));
                K = R;
                Y = e;
                W = l << 2;
                Gn(K | 0, Y | 0, W) | 0;
                if (D) {
                  G = 0
                } else {
                  Q = 142;
                  break
                }
                do {
                  Y = o[E + (G << 2) >> 2] | 0;
                  Gn(Y | 0, K | 0, W) | 0;
                  G = G + 1 | 0
                } while ((G | 0) < (p | 0));
                Nr(T, d, a, F, A, g);
                if (!D) {
                  break
                }
                Jn(X | 0, 0, p << 2 | 0)
              } else {
                W = R;
                K = e;
                Y = l << 2;
                Gn(W | 0, K | 0, Y) | 0;
                Q = 142
              }
            } while (0);
            if ((Q | 0) == 142) {
              Nr(T, d, a, F, A, g)
            }
            Q = (y | 0) > 0;
            do {
              if (Q) {
                R = (g | 0) > 0;
                G = (O | 0) == 0;
                x = p - 1 | 0;
                Y = z + (x << 2) | 0;
                K = p << 2;
                W = S;
                Z = E;
                J = 0;
                while (1) {
                  do {
                    if (D) {
                      $ = 0;
                      do {
                        u[z + ($ << 2) >> 2] = 999999986991104.0;
                        $ = $ + 1 | 0
                      } while (($ | 0) < (p | 0));
                      if (!D) {
                        break
                      }
                      Jn(H | 0, 0, K | 0);
                      Jn(U | 0, 0, K | 0)
                    }
                  } while (0);
                  $ = re(J, g) | 0;
                  ee = (J | 0) == 0;
                  te = 0;
                  while (1) {
                    if ((te | 0) >= (p | 0)) {
                      break
                    }
                    ne = o[Z + (te << 2) >> 2] | 0;
                    ie = ne + ($ << 2) | 0;
                    if (R) {
                      oe = 0.0;
                      ae = 0;
                      do {
                        se = +u[ne + (ae + $ << 2) >> 2];
                        oe = oe + se * se;
                        ae = ae + 1 | 0
                      } while ((ae | 0) < (g | 0));
                      le = oe * .5
                    } else {
                      le = 0.0
                    }
                    if (G) {
                      An(ie, a, g, A, F, p, L, I, h)
                    } else {
                      Tn(ie, a, g, A, F, p, L, I, h)
                    }
                    if (D) {
                      se = +u[j + (te << 2) >> 2];
                      ae = 0;
                      do {
                        ue = le + (se + +u[I + (ae << 2) >> 2]);
                        e: do {
                          if (ue < +u[Y >> 2]) {
                            ne = 0;
                            while (1) {
                              if ((ne | 0) >= (p | 0)) {
                                break e
                              }
                              ce = z + (ne << 2) | 0;
                              if (ue < +u[ce >> 2]) {
                                break
                              } else {
                                ne = ne + 1 | 0
                              }
                            }
                            if ((x | 0) > (ne | 0)) {
                              fe = x;
                              while (1) {
                                de = fe - 1 | 0;
                                u[z + (fe << 2) >> 2] = +u[z + (de << 2) >> 2];
                                o[B + (fe << 2) >> 2] = o[B + (de << 2) >> 2];
                                o[q + (fe << 2) >> 2] = o[q + (de << 2) >> 2];
                                if ((de | 0) > (ne | 0)) {
                                  fe = de
                                } else {
                                  _e = ne;
                                  break
                                }
                              }
                            } else {
                              _e = x
                            }
                            u[ce >> 2] = ue;
                            o[B + (_e << 2) >> 2] = o[L + (ae << 2) >> 2];
                            o[q + (_e << 2) >> 2] = te
                          }
                        } while (0);
                        ae = ae + 1 | 0
                      } while ((ae | 0) < (p | 0))
                    }
                    if (ee) {
                      break
                    } else {
                      te = te + 1 | 0
                    }
                  }
                  do {
                    if (D) {
                      te = re(J + 1 | 0, g) | 0;
                      ee = (te | 0) < (l | 0);
                      $ = l - te | 0;
                      ae = ($ | 0) > 0;
                      ie = 0;
                      do {
                        if (ee) {
                          ne = W + (ie << 2) | 0;
                          fe = o[q + (ie << 2) >> 2] | 0;
                          de = te;
                          do {
                            u[(o[ne >> 2] | 0) + (de << 2) >> 2] = +u[(o[Z + (fe << 2) >> 2] | 0) + (de << 2) >> 2];
                            de = de + 1 | 0
                          } while ((de | 0) < (l | 0))
                        }
                        if (R) {
                          de = W + (ie << 2) | 0;
                          fe = o[B + (ie << 2) >> 2] | 0;
                          ne = 0;
                          do {
                            he = (fe | 0) < (A | 0);
                            pe = g - ne | 0;
                            se = (he ? .03125 : -.03125) * +(n[T + ((re(fe - (he ? 0 : A) | 0, g) | 0) + ne) | 0] | 0);
                            he = o[de >> 2] | 0;
                            if (ae) {
                              me = 0;
                              do {
                                we = he + (me + te << 2) | 0;
                                u[we >> 2] = +u[we >> 2] - se * +u[d + (pe + me << 2) >> 2];
                                me = me + 1 | 0
                              } while ((me | 0) < ($ | 0))
                            }
                            ne = ne + 1 | 0
                          } while ((ne | 0) < (g | 0))
                        }
                        ne = o[v + (o[q + (ie << 2) >> 2] << 2) >> 2] | 0;
                        de = k + (ie << 2) | 0;
                        fe = o[de >> 2] | 0;
                        me = 0;
                        do {
                          o[fe + (me << 2) >> 2] = o[ne + (me << 2) >> 2];
                          me = me + 1 | 0
                        } while ((me | 0) < (y | 0));
                        o[(o[de >> 2] | 0) + (J << 2) >> 2] = o[B + (ie << 2) >> 2];
                        ie = ie + 1 | 0
                      } while ((ie | 0) < (p | 0));
                      if (D) {
                        be = 0
                      } else {
                        break
                      }
                      do {
                        ie = o[k + (be << 2) >> 2] | 0;
                        $ = o[v + (be << 2) >> 2] | 0;
                        te = 0;
                        do {
                          o[$ + (te << 2) >> 2] = o[ie + (te << 2) >> 2];
                          te = te + 1 | 0
                        } while ((te | 0) < (y | 0));
                        be = be + 1 | 0
                      } while ((be | 0) < (p | 0));
                      if (!D) {
                        break
                      }
                      Gn(X | 0, V | 0, K) | 0
                    }
                  } while (0);
                  te = J + 1 | 0;
                  if ((te | 0) < (y | 0)) {
                    ie = W;
                    W = Z;
                    J = te;
                    Z = ie
                  } else {
                    break
                  }
                }
                if (!Q) {
                  break
                }
                Z = o[k >> 2] | 0;
                J = 0;
                do {
                  W = o[Z + (J << 2) >> 2] | 0;
                  o[P + (J << 2) >> 2] = W;
                  kr(_, W, (o[M >> 2] | 0) + O | 0);
                  J = J + 1 | 0
                } while ((J | 0) < (y | 0));
                if (!Q) {
                  break
                }
                J = (g | 0) > 0;
                Z = 0;
                do {
                  W = o[P + (Z << 2) >> 2] | 0;
                  K = (W | 0) < (A | 0);
                  se = K ? .03125 : -.03125;
                  if (J) {
                    R = re(W - (K ? 0 : A) | 0, g) | 0;
                    K = re(Z, g) | 0;
                    W = 0;
                    do {
                      u[C + (W + K << 2) >> 2] = se * +(n[T + (W + R) | 0] | 0);
                      W = W + 1 | 0
                    } while ((W | 0) < (g | 0))
                  }
                  Z = Z + 1 | 0
                } while ((Z | 0) < (y | 0))
              }
            } while (0);
            y = (l | 0) > 0;
            if (y) {
              g = 0;
              do {
                T = c + (g << 2) | 0;
                u[T >> 2] = +u[T >> 2] + +u[C + (g << 2) >> 2];
                g = g + 1 | 0
              } while ((g | 0) < (l | 0))
            }
            if ((m | 0) != 0) {
              m = ze() | 0;
              g = f;
              f = f + (l * 4 | 0) | 0;
              f = f + 7 & -8;
              if (y) {
                y = g;
                C = l << 2;
                Gn(y | 0, N | 0, C) | 0;
                Kr(g, r, t, i, g, l, s, h);
                C = 0;
                do {
                  N = e + (C << 2) | 0;
                  u[N >> 2] = +u[N >> 2] - +u[g + (C << 2) >> 2];
                  C = C + 1 | 0
                } while ((C | 0) < (l | 0))
              } else {
                Kr(g, r, t, i, g, l, s, h)
              }
              Be(m | 0)
            }
            Be(b | 0);
            f = w;
            return
          }
          function Cr(e, r, t, i, a, s, l, c, d, _, h, p) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            i = i | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            c = c | 0;
            d = d | 0;
            _ = _ | 0;
            h = h | 0;
            p = p | 0;
            var m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0,
              y = 0,
              M = 0,
              F = 0,
              A = 0,
              T = 0,
              O = 0,
              R = 0,
              C = 0,
              N = 0,
              P = 0,
              x = 0,
              D = 0,
              I = 0,
              L = 0,
              B = 0,
              U = 0.0,
              q = 0,
              H = 0,
              z = 0,
              V = 0,
              j = 0,
              X = 0,
              K = 0,
              Y = 0;
            m = f;
            f = f + 16 | 0;
            w = m | 0;
            b = m + 8 | 0;
            E = o[a >> 2] | 0;
            S = o[a + 4 >> 2] | 0;
            v = a + 12 | 0;
            k = o[v >> 2] | 0;
            g = 1 << k;
            y = o[a + 8 >> 2] | 0;
            M = o[a + 16 >> 2] | 0;
            a = f;
            f = f + ((E << k) * 4 | 0) | 0;
            f = f + 7 & -8;
            k = f;
            f = f + (g * 4 | 0) | 0;
            f = f + 7 & -8;
            F = f;
            f = f + (l * 4 | 0) | 0;
            f = f + 7 & -8;
            A = f;
            f = f + (l * 4 | 0) | 0;
            f = f + 7 & -8;
            T = A;
            O = F;
            R = e;
            C = l << 2;
            Gn(O | 0, R | 0, C) | 0;
            Nr(y, d, a, k, g, E);
            if ((S | 0) > 0) {
              C = (M | 0) == 0;
              R = (E | 0) > 0;
              O = 0;
              while (1) {
                N = re(O, E) | 0;
                P = F + (N << 2) | 0;
                if (C) {
                  An(P, a, E, g, k, 1, w, b, h)
                } else {
                  Tn(P, a, E, g, k, 1, w, b, h)
                }
                kr(_, o[w >> 2] | 0, (o[v >> 2] | 0) + M | 0);
                P = o[w >> 2] | 0;
                x = (P | 0) < (g | 0);
                D = re(P - (x ? 0 : g) | 0, E) | 0;
                do {
                  if (x) {
                    if (R) {
                      I = 0
                    } else {
                      L = 225;
                      break
                    }
                    while (1) {
                      P = F + (I + N << 2) | 0;
                      u[P >> 2] = +u[P >> 2] - +u[a + (I + D << 2) >> 2];
                      P = I + 1 | 0;
                      if ((P | 0) < (E | 0)) {
                        I = P
                      } else {
                        L = 221;
                        break
                      }
                    }
                  } else {
                    if (R) {
                      B = 0
                    } else {
                      L = 225;
                      break
                    }
                    while (1) {
                      P = F + (B + N << 2) | 0;
                      u[P >> 2] = +u[P >> 2] + +u[a + (B + D << 2) >> 2];
                      P = B + 1 | 0;
                      if ((P | 0) < (E | 0)) {
                        B = P
                      } else {
                        L = 221;
                        break
                      }
                    }
                  }
                } while (0);
                do {
                  if ((L | 0) == 221) {
                    L = 0;
                    if (!R) {
                      L = 225;
                      break
                    }
                    U = x ? .03125 : -.03125;
                    P = 0;
                    do {
                      u[A + (P + N << 2) >> 2] = U * +(n[y + (P + D) | 0] | 0);
                      P = P + 1 | 0
                    } while ((P | 0) < (E | 0));
                    if (!R) {
                      L = 225;
                      break
                    }
                    P = O + 1 | 0;
                    q = re(P, E) | 0;
                    H = l - q | 0;
                    z = (H | 0) > 0;
                    V = 0;
                    while (1) {
                      j = E - V | 0;
                      U = (x ? .03125 : -.03125) * +(n[y + (D + V) | 0] | 0);
                      if (z) {
                        X = 0;
                        do {
                          K = F + (X + q << 2) | 0;
                          u[K >> 2] = +u[K >> 2] - U * +u[d + (j + X << 2) >> 2];
                          X = X + 1 | 0
                        } while ((X | 0) < (H | 0))
                      }
                      X = V + 1 | 0;
                      if ((X | 0) < (E | 0)) {
                        V = X
                      } else {
                        Y = P;
                        break
                      }
                    }
                  }
                } while (0);
                if ((L | 0) == 225) {
                  L = 0;
                  Y = O + 1 | 0
                }
                if ((Y | 0) < (S | 0)) {
                  O = Y
                } else {
                  break
                }
              }
            }
            Y = (l | 0) > 0;
            if (Y) {
              O = 0;
              do {
                S = c + (O << 2) | 0;
                u[S >> 2] = +u[S >> 2] + +u[A + (O << 2) >> 2];
                O = O + 1 | 0
              } while ((O | 0) < (l | 0))
            }
            if ((p | 0) == 0) {
              f = m;
              return
            }
            p = ze() | 0;
            O = f;
            f = f + (l * 4 | 0) | 0;
            f = f + 7 & -8;
            if (Y) {
              Y = O;
              A = l << 2;
              Gn(Y | 0, T | 0, A) | 0;
              Kr(O, r, t, i, O, l, s, h);
              A = 0;
              do {
                T = e + (A << 2) | 0;
                u[T >> 2] = +u[T >> 2] - +u[O + (A << 2) >> 2];
                A = A + 1 | 0
              } while ((A | 0) < (l | 0))
            } else {
              Kr(O, r, t, i, O, l, s, h)
            }
            Be(p | 0);
            f = m;
            return
          }
          function Nr(e, r, t, i, o, a) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            var s = 0,
              l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0.0,
              w = 0.0;
            s = f;
            l = f;
            f = f + (a * 4 | 0) | 0;
            f = f + 7 & -8;
            if ((o | 0) <= 0) {
              f = s;
              return
            }
            if ((a | 0) > 0) {
              c = 0
            } else {
              Jn(i | 0, 0, o << 2 | 0);
              f = s;
              return
            }
            do {
              d = re(c, a) | 0;
              _ = 0;
              do {
                u[l + (_ << 2) >> 2] = +(n[e + (_ + d) | 0] | 0);
                _ = _ + 1 | 0
              } while ((_ | 0) < (a | 0));
              _ = i + (c << 2) | 0;
              u[_ >> 2] = 0.0;
              h = 0;
              do {
                p = 0;
                m = 0.0;
                do {
                  m = m + +u[l + (p << 2) >> 2] * +u[r + (h - p << 2) >> 2];
                  p = p + 1 | 0
                } while ((p | 0) <= (h | 0));
                w = m * .03125;
                u[_ >> 2] = w * w + +u[_ >> 2];
                u[t + (h + d << 2) >> 2] = w;
                h = h + 1 | 0
              } while ((h | 0) < (a | 0));
              c = c + 1 | 0
            } while ((c | 0) < (o | 0));
            f = s;
            return
          }
          function Pr(e, r, t, i, a, s) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            i = i | 0;
            a = a | 0;
            s = s | 0;
            var l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0.0,
              w = 0;
            s = f;
            a = o[r >> 2] | 0;
            t = o[r + 4 >> 2] | 0;
            l = r + 12 | 0;
            c = o[r + 8 >> 2] | 0;
            d = f;
            f = f + (t * 4 | 0) | 0;
            f = f + 7 & -8;
            _ = f;
            f = f + (t * 4 | 0) | 0;
            f = f + 7 & -8;
            h = (t | 0) > 0;
            if (!h) {
              f = s;
              return
            }
            p = (o[r + 16 >> 2] | 0) == 0;
            r = 0;
            do {
              if (p) {
                o[_ + (r << 2) >> 2] = 0
              } else {
                o[_ + (r << 2) >> 2] = yr(i, 1) | 0
              }
              o[d + (r << 2) >> 2] = yr(i, o[l >> 2] | 0) | 0;
              r = r + 1 | 0
            } while ((r | 0) < (t | 0));
            if (!h) {
              f = s;
              return
            }
            h = (a | 0) > 0;
            r = 0;
            do {
              m = (o[_ + (r << 2) >> 2] | 0) == 0 ? .03125 : -.03125;
              if (h) {
                l = re(o[d + (r << 2) >> 2] | 0, a) | 0;
                i = re(r, a) | 0;
                p = 0;
                do {
                  w = e + (p + i << 2) | 0;
                  u[w >> 2] = +u[w >> 2] + m * +(n[c + (l + p) | 0] | 0);
                  p = p + 1 | 0
                } while ((p | 0) < (a | 0))
              }
              r = r + 1 | 0
            } while ((r | 0) < (t | 0));
            f = s;
            return
          }
          function xr(e, r, t, n, i, o, a, s, l, c, d, _, h) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            c = c | 0;
            d = d | 0;
            _ = _ | 0;
            h = h | 0;
            h = f;
            _ = f;
            f = f + (a * 4 | 0) | 0;
            f = f + 7 & -8;
            Yr(e, r, t, n, _, a, o, d);
            if ((a | 0) > 0) {
              d = 0;
              do {
                o = s + (d << 2) | 0;
                u[o >> 2] = +u[_ + (d << 2) >> 2] + +u[o >> 2];
                d = d + 1 | 0
              } while ((d | 0) < (a | 0))
            }
            Jn(e | 0, 0, a << 2 | 0);
            f = h;
            return
          }
          function Dr(e, r, t, n, i, a) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            a = a | 0;
            var s = 0;
            if ((t | 0) > 0) {
              s = 0
            } else {
              return
            }
            do {
              i = (re(o[a >> 2] | 0, 1664525) | 0) + 1013904223 | 0;
              o[a >> 2] = i;
              u[e + (s << 2) >> 2] = ((o[_ >> 2] = i & 8388607 | 1065353216, +u[_ >> 2]) + -1.5) * 3.4642;
              s = s + 1 | 0
            } while ((s | 0) < (t | 0));
            return
          }
          function Ir(e, r, t, n) {
            e = +e;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            var i = 0,
              o = 0.0,
              a = 0;
            if ((n | 0) > 0) {
              i = 0;
              o = e
            } else {
              return
            }
            while (1) {
              u[t + (i << 2) >> 2] = o * +u[r + (i << 2) >> 2];
              a = i + 1 | 0;
              if ((a | 0) < (n | 0)) {
                i = a;
                o = o * e
              } else {
                break
              }
            }
            return
          }
          function Lr(e, r, t, n) {
            e = e | 0;
            r = +r;
            t = +t;
            n = n | 0;
            var i = 0,
              o = 0,
              a = 0.0;
            if ((n | 0) > 0) {
              i = 0
            } else {
              return
            }
            do {
              o = e + (i << 2) | 0;
              a = +u[o >> 2];
              do {
                if (a < r | a > t) {
                  if (a < r) {
                    u[o >> 2] = r;
                    break
                  }
                  if (a > t) {
                    u[o >> 2] = t;
                    break
                  } else {
                    u[o >> 2] = 0.0;
                    break
                  }
                }
              } while (0);
              i = i + 1 | 0
            } while ((i | 0) < (n | 0));
            return
          }
          function Br(e, r, t, n, i) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            var o = 0,
              a = 0.0,
              s = 0.0,
              l = 0.0,
              c = 0.0,
              f = 0.0,
              d = 0,
              _ = 0.0,
              h = 0.0;
            o = (n | 0) > 4 ? 4 : n;
            if ((t | 0) <= 0) {
              return
            }
            a = +u[3280 + (o * 12 | 0) >> 2];
            n = i + 4 | 0;
            s = +u[3284 + (o * 12 | 0) >> 2];
            l = -0.0 - +u[3348 + (o * 12 | 0) >> 2];
            c = +u[3288 + (o * 12 | 0) >> 2];
            f = -0.0 - +u[3352 + (o * 12 | 0) >> 2];
            o = 0;
            do {
              d = e + (o << 2) | 0;
              _ = +u[d >> 2];
              h = a * _ + +u[i >> 2];
              u[i >> 2] = +u[n >> 2] + _ * s + h * l;
              u[n >> 2] = c * +u[d >> 2] + h * f;
              u[r + (o << 2) >> 2] = h;
              o = o + 1 | 0
            } while ((o | 0) < (t | 0));
            return
          }
          function Ur(e, r, t, n) {
            e = e | 0;
            r = r | 0;
            t = +t;
            n = n | 0;
            var i = 0;
            if ((n | 0) > 0) {
              i = 0
            } else {
              return
            }
            do {
              u[r + (i << 2) >> 2] = +u[e + (i << 2) >> 2] * t;
              i = i + 1 | 0
            } while ((i | 0) < (n | 0));
            return
          }
          function qr(e, r, t, n) {
            e = e | 0;
            r = r | 0;
            t = +t;
            n = n | 0;
            var i = 0.0,
              o = 0;
            i = 1.0 / t;
            if ((n | 0) > 0) {
              o = 0
            } else {
              return
            }
            do {
              u[r + (o << 2) >> 2] = i * +u[e + (o << 2) >> 2];
              o = o + 1 | 0
            } while ((o | 0) < (n | 0));
            return
          }
          function Hr(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              n = 0.0,
              i = 0.0,
              o = 0.0,
              a = 0,
              s = 0.0;
            if ((r | 0) > 0) {
              t = 0;
              n = 0.0;
              while (1) {
                i = +u[e + (t << 2) >> 2];
                o = n + i * i;
                a = t + 1 | 0;
                if ((a | 0) < (r | 0)) {
                  t = a;
                  n = o
                } else {
                  s = o;
                  break
                }
              }
            } else {
              s = 0.0
            }
            return + +V(s / +(r | 0) + .1)
          }
          function zr(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              n = 0.0,
              i = 0.0,
              o = 0.0,
              a = 0,
              s = 0.0;
            if ((r | 0) > 0) {
              t = 0;
              n = 0.0;
              while (1) {
                i = +u[e + (t << 2) >> 2];
                o = n + i * i;
                a = t + 1 | 0;
                if ((a | 0) < (r | 0)) {
                  t = a;
                  n = o
                } else {
                  s = o;
                  break
                }
              }
            } else {
              s = 0.0
            }
            return + +V(s / +(r | 0) + .1)
          }
          function Vr(e, r, t, n, i, o, a, s) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            s = s | 0;
            var l = 0,
              c = 0.0,
              f = 0.0,
              d = 0.0,
              _ = 0;
            if ((i | 0) <= 0) {
              return
            }
            s = o - 1 | 0;
            if ((s | 0) > 0) {
              l = 0
            } else {
              o = 0;
              do {
                c = +u[e + (o << 2) >> 2];
                f = c + +u[a >> 2];
                u[a + (s << 2) >> 2] = c * +u[r + (s << 2) >> 2] + +u[t + (s << 2) >> 2] * (- 0.0 - f);
                u[n + (o << 2) >> 2] = f;
                o = o + 1 | 0
              } while ((o | 0) < (i | 0));
              return
            }
            do {
              f = +u[e + (l << 2) >> 2];
              c = f + +u[a >> 2];
              d = -0.0 - c;
              o = 0;
              while (1) {
                _ = o + 1 | 0;
                u[a + (o << 2) >> 2] = +u[a + (_ << 2) >> 2] + f * +u[r + (o << 2) >> 2] + +u[t + (o << 2) >> 2] * d;
                if ((_ | 0) < (s | 0)) {
                  o = _
                } else {
                  break
                }
              }
              u[a + (s << 2) >> 2] = f * +u[r + (s << 2) >> 2] + +u[t + (s << 2) >> 2] * d;
              u[n + (l << 2) >> 2] = c;
              l = l + 1 | 0
            } while ((l | 0) < (i | 0));
            return
          }
          function jr(e, r, t, n, i, o, a) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            var s = 0,
              l = 0.0,
              c = 0.0,
              f = 0;
            if ((n | 0) <= 0) {
              return
            }
            a = i - 1 | 0;
            if ((a | 0) > 0) {
              s = 0
            } else {
              i = 0;
              do {
                l = +u[e + (i << 2) >> 2] + +u[o >> 2];
                u[o + (a << 2) >> 2] = +u[r + (a << 2) >> 2] * (- 0.0 - l);
                u[t + (i << 2) >> 2] = l;
                i = i + 1 | 0
              } while ((i | 0) < (n | 0));
              return
            }
            do {
              l = +u[e + (s << 2) >> 2] + +u[o >> 2];
              c = -0.0 - l;
              i = 0;
              while (1) {
                f = i + 1 | 0;
                u[o + (i << 2) >> 2] = +u[o + (f << 2) >> 2] + +u[r + (i << 2) >> 2] * c;
                if ((f | 0) < (a | 0)) {
                  i = f
                } else {
                  break
                }
              }
              u[o + (a << 2) >> 2] = +u[r + (a << 2) >> 2] * c;
              u[t + (s << 2) >> 2] = l;
              s = s + 1 | 0
            } while ((s | 0) < (n | 0));
            return
          }
          function Xr(e, r, t, n, i, o, a) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            var s = 0,
              l = 0.0,
              c = 0.0,
              f = 0;
            if ((n | 0) <= 0) {
              return
            }
            a = i - 1 | 0;
            if ((a | 0) > 0) {
              s = 0
            } else {
              i = 0;
              do {
                l = +u[e + (i << 2) >> 2];
                c = l + +u[o >> 2];
                u[o + (a << 2) >> 2] = l * +u[r + (a << 2) >> 2];
                u[t + (i << 2) >> 2] = c;
                i = i + 1 | 0
              } while ((i | 0) < (n | 0));
              return
            }
            do {
              c = +u[e + (s << 2) >> 2];
              l = c + +u[o >> 2];
              i = 0;
              while (1) {
                f = i + 1 | 0;
                u[o + (i << 2) >> 2] = +u[o + (f << 2) >> 2] + c * +u[r + (i << 2) >> 2];
                if ((f | 0) < (a | 0)) {
                  i = f
                } else {
                  break
                }
              }
              u[o + (a << 2) >> 2] = c * +u[r + (a << 2) >> 2];
              u[t + (s << 2) >> 2] = l;
              s = s + 1 | 0
            } while ((s | 0) < (n | 0));
            return
          }
          function Kr(e, r, t, n, i, o, a, s) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            s = s | 0;
            var l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0.0,
              S = 0.0,
              v = 0,
              k = 0,
              g = 0.0,
              y = 0.0,
              M = 0.0;
            s = f;
            l = f;
            f = f + (a * 4 | 0) | 0;
            f = f + 7 & -8;
            c = l;
            d = (a | 0) > 0;
            if (d) {
              Jn(c | 0, 0, a << 2 | 0)
            }
            _ = (o | 0) > 0;
            e: do {
              if (_) {
                h = a - 1 | 0;
                p = r + (h << 2) | 0;
                m = l + (h << 2) | 0;
                if ((h | 0) > 0) {
                  w = 0
                } else {
                  b = 0;
                  while (1) {
                    E = +u[e + (b << 2) >> 2] + +u[l >> 2];
                    u[m >> 2] = +u[p >> 2] * (- 0.0 - E);
                    u[i + (b << 2) >> 2] = E;
                    b = b + 1 | 0;
                    if ((b | 0) >= (o | 0)) {
                      break e
                    }
                  }
                }
                do {
                  E = +u[e + (w << 2) >> 2] + +u[l >> 2];
                  S = -0.0 - E;
                  b = 0;
                  while (1) {
                    v = b + 1 | 0;
                    u[l + (b << 2) >> 2] = +u[l + (v << 2) >> 2] + +u[r + (b << 2) >> 2] * S;
                    if ((v | 0) < (h | 0)) {
                      b = v
                    } else {
                      break
                    }
                  }
                  u[m >> 2] = +u[p >> 2] * S;
                  u[i + (w << 2) >> 2] = E;
                  w = w + 1 | 0
                } while ((w | 0) < (o | 0))
              }
            } while (0);
            if (d) {
              Jn(c | 0, 0, a << 2 | 0)
            }
            if (!_) {
              f = s;
              return
            }
            _ = a - 1 | 0;
            a = t + (_ << 2) | 0;
            c = n + (_ << 2) | 0;
            d = l + (_ << 2) | 0;
            if ((_ | 0) > 0) {
              k = 0
            } else {
              w = 0;
              do {
                r = i + (w << 2) | 0;
                g = +u[r >> 2];
                y = g + +u[l >> 2];
                u[d >> 2] = g * +u[a >> 2] + +u[c >> 2] * (- 0.0 - y);
                u[r >> 2] = y;
                w = w + 1 | 0
              } while ((w | 0) < (o | 0));
              f = s;
              return
            }
            do {
              w = i + (k << 2) | 0;
              y = +u[w >> 2];
              g = y + +u[l >> 2];
              M = -0.0 - g;
              r = 0;
              while (1) {
                e = r + 1 | 0;
                u[l + (r << 2) >> 2] = +u[l + (e << 2) >> 2] + y * +u[t + (r << 2) >> 2] + +u[n + (r << 2) >> 2] * M;
                if ((e | 0) < (_ | 0)) {
                  r = e
                } else {
                  break
                }
              }
              u[d >> 2] = y * +u[a >> 2] + +u[c >> 2] * M;
              u[w >> 2] = g;
              k = k + 1 | 0
            } while ((k | 0) < (o | 0));
            f = s;
            return
          }
          function Yr(e, r, t, n, i, o, a, s) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            s = s | 0;
            var l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0.0,
              v = 0.0,
              k = 0.0,
              g = 0,
              y = 0,
              M = 0.0,
              F = 0.0;
            s = f;
            l = f;
            f = f + (a * 4 | 0) | 0;
            f = f + 7 & -8;
            c = l;
            d = (a | 0) > 0;
            if (d) {
              Jn(c | 0, 0, a << 2 | 0)
            }
            _ = (o | 0) > 0;
            e: do {
              if (_) {
                h = a - 1 | 0;
                p = r + (h << 2) | 0;
                m = t + (h << 2) | 0;
                w = l + (h << 2) | 0;
                if ((h | 0) > 0) {
                  b = 0
                } else {
                  E = 0;
                  while (1) {
                    S = +u[e + (E << 2) >> 2];
                    v = S + +u[l >> 2];
                    u[w >> 2] = S * +u[p >> 2] + +u[m >> 2] * (- 0.0 - v);
                    u[i + (E << 2) >> 2] = v;
                    E = E + 1 | 0;
                    if ((E | 0) >= (o | 0)) {
                      break e
                    }
                  }
                }
                do {
                  v = +u[e + (b << 2) >> 2];
                  S = v + +u[l >> 2];
                  k = -0.0 - S;
                  E = 0;
                  while (1) {
                    g = E + 1 | 0;
                    u[l + (E << 2) >> 2] = +u[l + (g << 2) >> 2] + v * +u[r + (E << 2) >> 2] + +u[t + (E << 2) >> 2] * k;
                    if ((g | 0) < (h | 0)) {
                      E = g
                    } else {
                      break
                    }
                  }
                  u[w >> 2] = v * +u[p >> 2] + +u[m >> 2] * k;
                  u[i + (b << 2) >> 2] = S;
                  b = b + 1 | 0
                } while ((b | 0) < (o | 0))
              }
            } while (0);
            if (d) {
              Jn(c | 0, 0, a << 2 | 0)
            }
            if (!_) {
              f = s;
              return
            }
            _ = a - 1 | 0;
            a = n + (_ << 2) | 0;
            c = l + (_ << 2) | 0;
            if ((_ | 0) > 0) {
              y = 0
            } else {
              d = 0;
              do {
                b = i + (d << 2) | 0;
                M = +u[b >> 2];
                F = M + +u[l >> 2];
                u[c >> 2] = M * +u[a >> 2];
                u[b >> 2] = F;
                d = d + 1 | 0
              } while ((d | 0) < (o | 0));
              f = s;
              return
            }
            do {
              d = i + (y << 2) | 0;
              F = +u[d >> 2];
              M = +u[l >> 2];
              b = 0;
              while (1) {
                t = b + 1 | 0;
                u[l + (b << 2) >> 2] = +u[l + (t << 2) >> 2] + F * +u[n + (b << 2) >> 2];
                if ((t | 0) < (_ | 0)) {
                  b = t
                } else {
                  break
                }
              }
              u[c >> 2] = F * +u[a >> 2];
              u[d >> 2] = F + M;
              y = y + 1 | 0
            } while ((y | 0) < (o | 0));
            f = s;
            return
          }
          function Wr(e, r, t, n, i, o, a) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            var s = 0,
              l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0.0,
              E = 0.0,
              S = 0.0;
            a = f;
            s = f;
            f = f + (o * 4 | 0) | 0;
            f = f + 7 & -8;
            l = s;
            c = f;
            f = f + (o * 4 | 0) | 0;
            f = f + 7 & -8;
            d = c;
            u[n >> 2] = 1.0;
            _ = (o | 0) > 0;
            if (_) {
              h = 0;
              while (1) {
                p = h + 1 | 0;
                u[n + (p << 2) >> 2] = +u[r + (h << 2) >> 2];
                if ((p | 0) < (o | 0)) {
                  h = p
                } else {
                  break
                }
              }
              m = o + 1 | 0
            } else {
              m = 1
            }
            if ((m | 0) < (i | 0)) {
              h = m;
              do {
                u[n + (h << 2) >> 2] = 1.0000000036274937e-15;
                h = h + 1 | 0
              } while ((h | 0) < (i | 0))
            }
            if (_) {
              _ = o << 2;
              Jn(d | 0, 0, _ | 0);
              Jn(l | 0, 0, _ | 0)
            }
            if ((i | 0) <= 0) {
              f = a;
              return
            }
            _ = o - 1 | 0;
            if ((_ | 0) > 0) {
              w = 0
            } else {
              o = 0;
              do {
                l = n + (o << 2) | 0;
                b = +u[l >> 2] + +u[s >> 2];
                E = b + +u[c >> 2];
                u[l >> 2] = E;
                u[s + (_ << 2) >> 2] = +u[t + (_ << 2) >> 2] * (- 0.0 - b);
                u[c + (_ << 2) >> 2] = +u[e + (_ << 2) >> 2] * (- 0.0 - E);
                o = o + 1 | 0
              } while ((o | 0) < (i | 0));
              f = a;
              return
            }
            do {
              o = n + (w << 2) | 0;
              E = +u[o >> 2] + +u[s >> 2];
              b = -0.0 - E;
              S = E + +u[c >> 2];
              u[o >> 2] = S;
              E = -0.0 - S;
              o = 0;
              while (1) {
                l = o + 1 | 0;
                u[s + (o << 2) >> 2] = +u[s + (l << 2) >> 2] + +u[t + (o << 2) >> 2] * b;
                u[c + (o << 2) >> 2] = +u[c + (l << 2) >> 2] + +u[e + (o << 2) >> 2] * E;
                if ((l | 0) < (_ | 0)) {
                  o = l
                } else {
                  break
                }
              }
              u[s + (_ << 2) >> 2] = +u[t + (_ << 2) >> 2] * b;
              u[c + (_ << 2) >> 2] = +u[e + (_ << 2) >> 2] * E;
              w = w + 1 | 0
            } while ((w | 0) < (i | 0));
            f = a;
            return
          }
          function Gr(e, r, t, n, i, o, a, s) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            s = s | 0;
            var l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0.0,
              E = 0.0,
              S = 0.0,
              v = 0.0,
              k = 0.0,
              g = 0.0,
              y = 0.0,
              M = 0.0,
              F = 0.0,
              A = 0.0,
              T = 0.0,
              O = 0.0;
            s = f;
            l = e;
            c = f;
            f = f + (o * 4 | 0) | 0;
            f = f + 7 & -8;
            d = i - 1 | 0;
            _ = f;
            f = f + ((d + o | 0) * 4 | 0) | 0;
            f = f + 7 & -8;
            h = o - 1 | 0;
            p = o >> 1;
            if ((o | 0) > 0) {
              m = 0;
              do {
                u[c + (h - m << 2) >> 2] = +u[r + (m << 2) >> 2];
                m = m + 1 | 0
              } while ((m | 0) < (o | 0))
            }
            m = (h | 0) > 0;
            if (m) {
              r = o - 2 | 0;
              o = 0;
              do {
                u[_ + (o << 2) >> 2] = +u[a + (r - o << 2) >> 2];
                o = o + 1 | 0
              } while ((o | 0) < (h | 0))
            }
            o = (i | 0) > 0;
            if (o) {
              r = _ + (h << 2) | 0;
              w = i << 2;
              Gn(r | 0, l | 0, w) | 0
            }
            if (m) {
              m = 0;
              do {
                u[a + (m << 2) >> 2] = +u[e + (d - m << 2) >> 2];
                m = m + 1 | 0
              } while ((m | 0) < (h | 0))
            }
            if (!o) {
              f = s;
              return
            }
            o = (p | 0) > 0;
            m = 0;
            d = 0;
            while (1) {
              if (o) {
                e = d + h | 0;
                a = 0;
                b = 0.0;
                E = 0.0;
                while (1) {
                  S = +u[c + (a << 2) >> 2];
                  v = +u[_ + (a + d << 2) >> 2];
                  k = +u[_ + (e - a << 2) >> 2];
                  w = a | 1;
                  g = +u[c + (w << 2) >> 2];
                  y = +u[_ + (w + d << 2) >> 2];
                  M = +u[_ + (e - w << 2) >> 2];
                  F = b + S * (v + k) + g * (y + M);
                  A = E - S * (v - k) + g * (y - M);
                  w = a + 2 | 0;
                  if ((w | 0) < (p | 0)) {
                    a = w;
                    b = F;
                    E = A
                  } else {
                    T = F;
                    O = A;
                    break
                  }
                }
              } else {
                T = 0.0;
                O = 0.0
              }
              u[t + (m << 2) >> 2] = T;
              u[n + (m << 2) >> 2] = O;
              a = d + 2 | 0;
              if ((a | 0) < (i | 0)) {
                m = m + 1 | 0;
                d = a
              } else {
                break
              }
            }
            f = s;
            return
          }
          function Qr(e, r, t, n, i, o, a, s, l) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            var c = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0.0,
              S = 0.0,
              v = 0.0,
              k = 0.0,
              g = 0.0,
              y = 0.0,
              M = 0,
              F = 0.0,
              A = 0.0,
              T = 0,
              O = 0.0,
              R = 0.0,
              C = 0.0,
              N = 0.0,
              P = 0.0,
              x = 0.0,
              D = 0.0,
              I = 0.0,
              L = 0.0,
              B = 0.0,
              U = 0.0,
              q = 0.0,
              H = 0.0,
              z = 0.0,
              V = 0,
              j = 0;
            l = f;
            c = o >> 1;
            o = i >> 1;
            i = c + o | 0;
            d = f;
            f = f + (i * 4 | 0) | 0;
            f = f + 7 & -8;
            _ = f;
            f = f + (i * 4 | 0) | 0;
            f = f + 7 & -8;
            i = (o | 0) > 0;
            if (i) {
              h = o - 1 | 0;
              p = 0;
              do {
                u[d + (p << 2) >> 2] = +u[e + (h - p << 2) >> 2];
                p = p + 1 | 0
              } while ((p | 0) < (o | 0))
            }
            p = (c | 0) > 0;
            if (p) {
              h = 0;
              do {
                u[d + (h + o << 2) >> 2] = +u[a + ((h << 1 | 1) << 2) >> 2];
                h = h + 1 | 0
              } while ((h | 0) < (c | 0))
            }
            if (i) {
              h = o - 1 | 0;
              e = 0;
              do {
                u[_ + (e << 2) >> 2] = +u[r + (h - e << 2) >> 2];
                e = e + 1 | 0
              } while ((e | 0) < (o | 0))
            }
            if (p) {
              e = 0;
              do {
                u[_ + (e + o << 2) >> 2] = +u[s + ((e << 1 | 1) << 2) >> 2];
                e = e + 1 | 0
              } while ((e | 0) < (c | 0))
            }
            if (i) {
              i = o - 2 | 0;
              e = o - 1 | 0;
              h = 0;
              r = 0;
              while (1) {
                m = i + r | 0;
                if (p) {
                  w = e + r | 0;
                  b = r + o | 0;
                  E = 0.0;
                  S = 0.0;
                  v = +u[d + (m << 2) >> 2];
                  k = +u[_ + (m << 2) >> 2];
                  g = 0.0;
                  y = 0.0;
                  m = 0;
                  while (1) {
                    M = m << 1;
                    F = +u[t + (M << 2) >> 2];
                    A = +u[t + ((M | 1) << 2) >> 2];
                    T = w + m | 0;
                    O = +u[d + (T << 2) >> 2];
                    R = +u[_ + (T << 2) >> 2];
                    C = O - R;
                    N = O + R;
                    R = +u[t + ((M | 2) << 2) >> 2];
                    O = +u[t + ((M | 3) << 2) >> 2];
                    M = b + m | 0;
                    P = +u[d + (M << 2) >> 2];
                    x = +u[_ + (M << 2) >> 2];
                    D = y + F * C + R * (P - x);
                    I = g + A * N + O * (P + x);
                    L = E + (v - k) * F + R * C;
                    B = S + (v + k) * A + N * O;
                    M = m + 2 | 0;
                    if ((M | 0) < (c | 0)) {
                      E = L;
                      S = B;
                      v = P;
                      k = x;
                      g = I;
                      y = D;
                      m = M
                    } else {
                      break
                    }
                  }
                  U = L * 2.0;
                  q = B * 2.0;
                  H = I * 2.0;
                  z = D * 2.0
                } else {
                  U = 0.0;
                  q = 0.0;
                  H = 0.0;
                  z = 0.0
                }
                m = h << 1;
                u[n + (m << 2) >> 2] = z;
                u[n + ((m | 1) << 2) >> 2] = H;
                u[n + ((m | 2) << 2) >> 2] = U;
                u[n + ((m | 3) << 2) >> 2] = q;
                m = h + 2 | 0;
                b = -2 - h | 0;
                if ((m | 0) < (o | 0)) {
                  h = m;
                  r = b
                } else {
                  break
                }
              }
            }
            if (p) {
              V = 0
            } else {
              f = l;
              return
            }
            do {
              u[a + ((V << 1 | 1) << 2) >> 2] = +u[d + (V << 2) >> 2];
              V = V + 1 | 0
            } while ((V | 0) < (c | 0));
            if (p) {
              j = 0
            } else {
              f = l;
              return
            }
            do {
              u[s + ((j << 1 | 1) << 2) >> 2] = +u[_ + (j << 2) >> 2];
              j = j + 1 | 0
            } while ((j | 0) < (c | 0));
            f = l;
            return
          }
          function Zr(e, r, t, n) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            var i = 0,
              o = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0.0,
              m = 0.0,
              w = 0.0,
              b = 0,
              E = 0.0,
              S = 0,
              v = 0.0,
              k = 0,
              g = 0,
              y = 0,
              M = 0,
              F = 0,
              A = 0,
              T = 0.0;
            i = f;
            f = f + 112 | 0;
            o = i | 0;
            a = -3 - t | 0;
            s = o | 0;
            u[s >> 2] = +ot(e, e + (a << 2) | 0, n);
            u[o + 4 >> 2] = +ot(e, e + (a + 1 << 2) | 0, n);
            u[o + 8 >> 2] = +ot(e, e + (a + 2 << 2) | 0, n);
            u[o + 12 >> 2] = +ot(e, e + (a + 3 << 2) | 0, n);
            u[o + 16 >> 2] = +ot(e, e + (a + 4 << 2) | 0, n);
            u[o + 20 >> 2] = +ot(e, e + (a + 5 << 2) | 0, n);
            u[o + 24 >> 2] = +ot(e, e + (a + 6 << 2) | 0, n);
            l = 0;
            while (1) {
              c = 3 - l | 0;
              d = (c | 0) < 0 ? 0 : c;
              c = 10 - l | 0;
              _ = (c | 0) > 7 ? 7 : c;
              if ((d | 0) < (_ | 0)) {
                c = l - 3 | 0;
                h = d;
                p = 0.0;
                while (1) {
                  m = p + +u[1352 + (h << 2) >> 2] * +u[o + (c + h << 2) >> 2];
                  d = h + 1 | 0;
                  if ((d | 0) < (_ | 0)) {
                    h = d;
                    p = m
                  } else {
                    w = m;
                    break
                  }
                }
              } else {
                w = 0.0
              }
              u[o + 28 + (l << 2) >> 2] = w;
              h = l + 1 | 0;
              if ((h | 0) < 7) {
                l = h
              } else {
                b = 0;
                break
              }
            }
            while (1) {
              l = 3 - b | 0;
              h = (l | 0) < 0 ? 0 : l;
              l = 10 - b | 0;
              _ = (l | 0) > 7 ? 7 : l;
              if ((h | 0) < (_ | 0)) {
                l = b - 3 | 0;
                c = h;
                w = 0.0;
                while (1) {
                  p = w + +u[1380 + (c << 2) >> 2] * +u[o + (l + c << 2) >> 2];
                  h = c + 1 | 0;
                  if ((h | 0) < (_ | 0)) {
                    c = h;
                    w = p
                  } else {
                    E = p;
                    break
                  }
                }
              } else {
                E = 0.0
              }
              u[o + 56 + (b << 2) >> 2] = E;
              c = b + 1 | 0;
              if ((c | 0) < 7) {
                b = c
              } else {
                S = 0;
                break
              }
            }
            do {
              b = 3 - S | 0;
              c = (b | 0) < 0 ? 0 : b;
              b = 10 - S | 0;
              _ = (b | 0) > 7 ? 7 : b;
              if ((c | 0) < (_ | 0)) {
                b = S - 3 | 0;
                l = c;
                E = 0.0;
                while (1) {
                  w = E + +u[1408 + (l << 2) >> 2] * +u[o + (b + l << 2) >> 2];
                  c = l + 1 | 0;
                  if ((c | 0) < (_ | 0)) {
                    l = c;
                    E = w
                  } else {
                    v = w;
                    break
                  }
                }
              } else {
                v = 0.0
              }
              u[o + 84 + (S << 2) >> 2] = v;
              S = S + 1 | 0
            } while ((S | 0) < 7);
            v = +u[s >> 2];
            s = 0;
            E = v;
            S = 0;
            l = 0;
            w = v;
            while (1) {
              _ = w > E;
              v = _ ? w : E;
              p = +u[o + (s * 28 | 0) + 4 >> 2];
              b = p > v;
              m = b ? p : v;
              v = +u[o + (s * 28 | 0) + 8 >> 2];
              c = v > m;
              p = c ? v : m;
              m = +u[o + (s * 28 | 0) + 12 >> 2];
              h = m > p;
              v = h ? m : p;
              p = +u[o + (s * 28 | 0) + 16 >> 2];
              d = p > v;
              m = d ? p : v;
              v = +u[o + (s * 28 | 0) + 20 >> 2];
              k = v > m;
              p = k ? v : m;
              m = +u[o + (s * 28 | 0) + 24 >> 2];
              g = m > p;
              y = g ? s : k ? s : d ? s : h ? s : c ? s : b ? s : _ ? s : S;
              M = g ? 6 : k ? 5 : d ? 4 : h ? 3 : c ? 2 : b ? 1 : _ ? 0 : l;
              _ = s + 1 | 0;
              if ((_ | 0) >= 4) {
                break
              }
              s = _;
              E = g ? m : p;
              S = y;
              l = M;
              w = +u[o + (_ * 28 | 0) >> 2]
            }
            if ((n | 0) <= 0) {
              F = t + 3 | 0;
              A = F - M | 0;
              f = i;
              return A | 0
            }
            o = (y | 0) > 0;
            l = a + M | 0;
            a = -6 - t + M | 0;
            S = y - 1 | 0;
            y = 0;
            do {
              if (o) {
                s = a + y | 0;
                T = +u[e + (s << 2) >> 2] * +u[1352 + (S * 28 | 0) >> 2] + 0.0 + +u[e + (s + 1 << 2) >> 2] * +u[1356 + (S * 28 | 0) >> 2] + +u[e + (s + 2 << 2) >> 2] * +u[1360 + (S * 28 | 0) >> 2] + +u[e + (s + 3 << 2) >> 2] * +u[1364 + (S * 28 | 0) >> 2] + +u[e + (s + 4 << 2) >> 2] * +u[1368 + (S * 28 | 0) >> 2] + +u[e + (s + 5 << 2) >> 2] * +u[1372 + (S * 28 | 0) >> 2] + +u[e + (s + 6 << 2) >> 2] * +u[1376 + (S * 28 | 0) >> 2]
              } else {
                T = +u[e + (l + y << 2) >> 2]
              }
              u[r + (y << 2) >> 2] = T;
              y = y + 1 | 0
            } while ((y | 0) < (n | 0));
            F = t + 3 | 0;
            A = F - M | 0;
            f = i;
            return A | 0
          }
          function Jr(e, r, t, n, i, o, a, s, l) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            s = +s;
            l = l | 0;
            var c = 0,
              d = 0.0,
              _ = 0.0,
              h = 0.0,
              p = 0.0,
              m = 0.0,
              w = 0.0,
              b = 0.0,
              E = 0.0,
              S = 0.0,
              v = 0.0,
              k = 0.0,
              g = 0.0,
              y = 0,
              M = 0.0,
              F = 0.0,
              A = 0.0,
              T = 0;
            l = f;
            n = f;
            f = f + ((i << 1) * 4 | 0) | 0;
            f = f + 7 & -8;
            Zr(e, n, o, 80) | 0;
            t = (o | 0) > (a | 0);
            a = n + (i << 2) | 0;
            if (t) {
              c = o << 1;
              Zr(e, a, c, 80) | 0
            } else {
              c = -o | 0;
              Zr(e, a, c, 80) | 0
            }
            d = +V(+ ot(n, n, i) + 1.0e3);
            _ = +V(+ ot(a, a, i) + 1.0e3);
            h = +V(+ ot(e, e, i) + 1.0);
            p = +ot(n, e, i);
            m = p < 0.0 ? 0.0 : p;
            p = +ot(a, e, i);
            w = p < 0.0 ? 0.0 : p;
            if (m > d * h) {
              b = 1.0
            } else {
              b = m / h / d
            }
            if (w > _ * h) {
              E = 1.0
            } else {
              E = w / h / _
            }
            w = h / _;
            if (s > 0.0) {
              _ = s * .4 + .07;
              S = (_ + -.07) * 1.72 + .5;
              v = _
            } else {
              S = 0.0;
              v = 0.0
            }
            _ = 1.0 - b * b * S;
            b = 1.0 - E * E * S;
            S = v / (b < v ? v : b);
            b = h / d * (v / (_ < v ? v : _));
            if (t) {
              k = w * S * .3;
              g = b * .7
            } else {
              k = w * S * .6;
              g = b * .6
            }
            b = k;
            k = g;
            t = (i | 0) > 0;
            do {
              if (t) {
                a = 0;
                do {
                  u[r + (a << 2) >> 2] = +u[e + (a << 2) >> 2] + (k * +u[n + (a << 2) >> 2] + b * +u[n + (a + i << 2) >> 2]);
                  a = a + 1 | 0
                } while ((a | 0) < (i | 0));
                if (t) {
                  y = 0;
                  M = 0.0
                } else {
                  F = 0.0;
                  break
                }
                while (1) {
                  g = +u[r + (y << 2) >> 2];
                  S = M + g * g;
                  a = y + 1 | 0;
                  if ((a | 0) < (i | 0)) {
                    y = a;
                    M = S
                  } else {
                    F = S;
                    break
                  }
                }
              } else {
                F = 0.0
              }
            } while (0);
            M = +(i | 0);
            b = +V(F / M + .1);
            if (t) {
              y = 0;
              F = 0.0;
              while (1) {
                k = +u[e + (y << 2) >> 2];
                S = F + k * k;
                n = y + 1 | 0;
                if ((n | 0) < (i | 0)) {
                  y = n;
                  F = S
                } else {
                  A = S;
                  break
                }
              }
            } else {
              A = 0.0
            }
            F = +V(A / M + .1);
            M = F < 1.0 ? 1.0 : F;
            F = b < 1.0 ? 1.0 : b;
            b = (M > F ? F : M) / F;
            if (t) {
              T = 0
            } else {
              f = l;
              return
            }
            do {
              t = r + (T << 2) | 0;
              u[t >> 2] = b * +u[t >> 2];
              T = T + 1 | 0
            } while ((T | 0) < (i | 0));
            f = l;
            return
          }
          function $r(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0.0,
              o = 0,
              a = 0.0,
              s = 0,
              l = 0.0,
              c = 0.0,
              f = 0.0,
              d = 0,
              _ = 0.0,
              h = 0,
              p = 0,
              m = 0,
              w = 0;
            n = e;
            i = +u[r >> 2];
            o = (t | 0) > 0;
            if (i == 0.0) {
              if (!o) {
                a = 0.0;
                return + a
              }
              Jn(n | 0, 0, t << 2 | 0);
              a = 0.0;
              return + a
            }
            if (o) {
              s = 0;
              l = i
            } else {
              a = i;
              return + a
            }
            while (1) {
              o = s + 1 | 0;
              i = -0.0 - +u[r + (o << 2) >> 2];
              if ((s | 0) > 0) {
                n = 0;
                c = i;
                while (1) {
                  f = c - +u[e + (n << 2) >> 2] * +u[r + (s - n << 2) >> 2];
                  d = n + 1 | 0;
                  if ((d | 0) < (s | 0)) {
                    n = d;
                    c = f
                  } else {
                    _ = f;
                    break
                  }
                }
              } else {
                _ = i
              }
              c = _ / (l + +u[r >> 2] * .003);
              u[e + (s << 2) >> 2] = c;
              n = s >> 1;
              if ((n | 0) > 0) {
                d = s - 1 | 0;
                h = 0;
                while (1) {
                  p = e + (h << 2) | 0;
                  f = +u[p >> 2];
                  m = e + (d - h << 2) | 0;
                  u[p >> 2] = f + c * +u[m >> 2];
                  u[m >> 2] = c * f + +u[m >> 2];
                  m = h + 1 | 0;
                  if ((m | 0) < (n | 0)) {
                    h = m
                  } else {
                    w = n;
                    break
                  }
                }
              } else {
                w = 0
              }
              if ((s & 1 | 0) != 0) {
                n = e + (w << 2) | 0;
                i = +u[n >> 2];
                u[n >> 2] = i + c * i
              }
              i = l - c * l * c;
              if ((o | 0) < (t | 0)) {
                s = o;
                l = i
              } else {
                a = i;
                break
              }
            }
            return + a
          }
          function et(e, r, t, n) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            var i = 0.0,
              o = 0.0,
              a = 0,
              s = 0.0,
              l = 0.0,
              c = 0,
              f = 0.0;
            if ((t | 0) == 0) {
              i = +u[r >> 2];
              o = i + 10.0;
              u[r >> 2] = o;
              return
            } else {
              a = t
            }
            do {
              a = a - 1 | 0;
              if ((a | 0) < (n | 0)) {
                s = 0.0;
                t = a;
                while (1) {
                  l = s + +u[e + (t << 2) >> 2] * +u[e + (t - a << 2) >> 2];
                  c = t + 1 | 0;
                  if ((c | 0) < (n | 0)) {
                    s = l;
                    t = c
                  } else {
                    f = l;
                    break
                  }
                }
              } else {
                f = 0.0
              }
              u[r + (a << 2) >> 2] = f
            } while ((a | 0) != 0);
            i = +u[r >> 2];
            o = i + 10.0;
            u[r >> 2] = o;
            return
          }
          function rt(e, r, t, n, i, o) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = +i;
            o = o | 0;
            var a = 0,
              s = 0,
              l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0.0,
              S = 0.0,
              v = 0,
              k = 0,
              g = 0,
              y = 0,
              M = 0,
              F = 0,
              A = 0.0,
              T = 0.0,
              O = 0.0,
              R = 0.0,
              C = 0.0,
              N = 0.0,
              P = 0.0,
              x = 0.0,
              D = 0.0,
              I = 0.0,
              L = 0.0,
              B = 0.0,
              U = 0.0,
              q = 0.0,
              H = 0.0,
              V = 0.0,
              j = 0.0,
              X = 0.0,
              K = 0.0,
              Y = 0.0,
              G = 0.0,
              Q = 0.0,
              Z = 0.0,
              J = 0.0,
              $ = 0.0,
              ee = 0.0,
              re = 0.0,
              te = 0.0,
              ne = 0.0,
              ie = 0,
              oe = 0.0,
              ae = 0.0,
              se = 0.0,
              le = 0.0,
              ue = 0.0,
              ce = 0.0,
              fe = 0.0,
              de = 0.0,
              _e = 0.0;
            o = f;
            a = (r | 0) / 2 | 0;
            s = a + 1 | 0;
            l = f;
            f = f + (s * 4 | 0) | 0;
            f = f + 7 & -8;
            c = l;
            d = f;
            f = f + (s * 4 | 0) | 0;
            f = f + 7 & -8;
            _ = d;
            u[d >> 2] = 1.0;
            u[l >> 2] = 1.0;
            h = (r | 0) > 1;
            e: do {
              if (h) {
                p = r - 1 | 0;
                m = 0;
                w = l;
                b = d;
                E = 1.0;
                S = 1.0;
                do {
                  w = w + 4 | 0;
                  b = b + 4 | 0;
                  v = e + (m << 2) | 0;
                  k = e + (p - m << 2) | 0;
                  E = +u[v >> 2] + +u[k >> 2] - E;
                  u[b >> 2] = E;
                  S = +u[v >> 2] - +u[k >> 2] + S;
                  u[w >> 2] = S;
                  m = m + 1 | 0
                } while ((m | 0) < (a | 0));
                if (h) {
                  g = 1;
                  y = d;
                  M = l
                } else {
                  break
                }
                while (1) {
                  u[y >> 2] = +u[y >> 2] * 2.0;
                  u[M >> 2] = +u[M >> 2] * 2.0;
                  if ((g | 0) >= (a | 0)) {
                    break e
                  }
                  g = g + 1 | 0;
                  y = y + 4 | 0;
                  M = M + 4 | 0
                }
              }
            } while (0);
            M = f;
            f = f + (s * 4 | 0) | 0;
            f = f + 7 & -8;
            y = f;
            f = f + (s * 4 | 0) | 0;
            f = f + 7 & -8;
            if ((s | 0) > 0) {
              s = y;
              g = M;
              l = (a << 2) + 4 | 0;
              Gn(g | 0, _ | 0, l) | 0;
              Gn(s | 0, c | 0, l) | 0
            }
            if ((r | 0) <= 0) {
              F = 0;
              f = o;
              return F | 0
            }
            S = i;
            l = (n | 0) < 0;
            c = 0;
            i = 0.0;
            s = 0;
            E = 0.0;
            A = 1.0;
            while (1) {
              _ = (c & 1 | 0) == 0 ? M : y;
              T = A * 2.0;
              if (h) {
                g = a;
                O = 0.0;
                R = 0.0;
                while (1) {
                  C = T * O - R + +u[_ + (a - g << 2) >> 2];
                  d = g - 1 | 0;
                  if ((d | 0) > 0) {
                    g = d;
                    R = O;
                    O = C
                  } else {
                    break
                  }
                }
                N = C;
                P = O
              } else {
                N = 0.0;
                P = 0.0
              }
              R = +u[_ + (a << 2) >> 2];
              x = R;
              g = t + (c << 2) | 0;
              D = A;
              I = E;
              d = s;
              e = 0;
              L = i;
              B = T * .5 * N + (- 0.0 - P) + x;
              e: while (1) {
                if (e) {
                  U = I;
                  q = D;
                  break
                } else {
                  H = D;
                  V = I;
                  j = B
                }
                while (1) {
                  if (V < -1.0) {
                    U = V;
                    q = H;
                    break e
                  }
                  X = H;
                  K = S * (1.0 - X * X * .9);
                  if (+ z(+ j) < .2) {
                    Y = K * .5
                  } else {
                    Y = K
                  }
                  G = H - Y;
                  K = G * 2.0;
                  if (h) {
                    m = a;
                    X = 0.0;
                    Q = 0.0;
                    while (1) {
                      Z = K * X - Q + +u[_ + (a - m << 2) >> 2];
                      w = m - 1 | 0;
                      if ((w | 0) > 0) {
                        m = w;
                        Q = X;
                        X = Z
                      } else {
                        break
                      }
                    }
                    J = Z;
                    $ = X
                  } else {
                    J = 0.0;
                    $ = 0.0
                  }
                  Q = K * .5 * J + (- 0.0 - $) + x;
                  if (j * Q < 0.0) {
                    break
                  } else {
                    H = G;
                    V = G;
                    j = Q
                  }
                }
                m = d + 1 | 0;
                r: do {
                  if (l) {
                    ee = j;
                    re = L;
                    te = G
                  } else {
                    Q = R;
                    if (h) {
                      ne = j;
                      ie = 0;
                      oe = G;
                      ae = H
                    } else {
                      se = j;
                      w = 0;
                      le = G;
                      ue = H;
                      while (1) {
                        ce = (le + ue) * .5;
                        fe = ce * 2.0 * .5 * 0.0 + Q;
                        b = se * fe < 0.0;
                        de = b ? se : fe;
                        fe = b ? ce : le;
                        p = w + 1 | 0;
                        if ((p | 0) > (n | 0)) {
                          ee = de;
                          re = ce;
                          te = fe;
                          break r
                        } else {
                          se = de;
                          w = p;
                          le = fe;
                          ue = b ? ue : ce
                        }
                      }
                    }
                    while (1) {
                      ue = (oe + ae) * .5;
                      le = ue * 2.0;
                      w = a;
                      se = 0.0;
                      K = 0.0;
                      while (1) {
                        _e = le * se - K + +u[_ + (a - w << 2) >> 2];
                        b = w - 1 | 0;
                        if ((b | 0) > 0) {
                          w = b;
                          K = se;
                          se = _e
                        } else {
                          break
                        }
                      }
                      K = le * .5 * _e + (- 0.0 - se) + Q;
                      w = ne * K < 0.0;
                      X = w ? ne : K;
                      K = w ? ue : oe;
                      b = ie + 1 | 0;
                      if ((b | 0) > (n | 0)) {
                        ee = X;
                        re = ue;
                        te = K;
                        break
                      } else {
                        ne = X;
                        ie = b;
                        oe = K;
                        ae = w ? ae : ue
                      }
                    }
                  }
                } while (0);
                u[g >> 2] = +W(re);
                D = re;
                I = te;
                d = m;
                e = 1;
                L = re;
                B = ee
              }
              e = c + 1 | 0;
              if ((e | 0) < (r | 0)) {
                c = e;
                i = L;
                s = d;
                E = U;
                A = q
              } else {
                F = d;
                break
              }
            }
            f = o;
            return F | 0
          }
          function tt(e, r, t, n) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            var i = 0,
              o = 0,
              a = 0,
              s = 0,
              l = 0.0,
              c = 0.0,
              d = 0.0,
              _ = 0.0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0,
              v = 0.0,
              k = 0.0,
              g = 0.0;
            n = f;
            i = t >> 1;
            o = i << 2;
            a = f;
            f = f + ((o | 2) * 4 | 0) | 0;
            f = f + 7 & -8;
            if ((o | 0) >= 0) {
              o = i << 2 | 2;
              Jn(a | 0, 0, ((o | 0) > 1 ? o << 2 : 4) | 0)
            }
            o = f;
            f = f + (t * 4 | 0) | 0;
            f = f + 7 & -8;
            if ((t | 0) > 0) {
              s = 0;
              do {
                l = +u[e + (s << 2) >> 2];
                c = l;
                if (c < 1.5707963268) {
                  d = l * l;
                  _ = d * (d * (d * -.0012712094467133284 + .04148774594068527) + -.49991244077682495) + .9999933242797852
                } else {
                  d = 3.141592653589793 - c;
                  c = d * d;
                  _ = -0.0 - (c * (c * (c * -.0012712094467133284 + .04148774594068527) + -.49991244077682495) + .9999933242797852)
                }
                u[o + (s << 2) >> 2] = _;
                s = s + 1 | 0
              } while ((s | 0) < (t | 0))
            }
            if ((t | 0) < 0) {
              f = n;
              return
            }
            if ((i | 0) <= 0) {
              _ = 1.0;
              s = 0;
              while (1) {
                if ((s | 0) > 0) {
                  c = +te(8);
                  u[r + (s - 1 << 2) >> 2] = (_ - c + (_ + +te(4))) * .5
                }
                u[1] = _;
                u[2] = _;
                e = s + 1 | 0;
                if ((e | 0) > (t | 0)) {
                  break
                } else {
                  _ = 0.0;
                  s = e
                }
              }
              f = n;
              return
            }
            s = i << 2;
            _ = 1.0;
            e = 0;
            while (1) {
              c = _;
              d = _;
              h = 0;
              p = 0;
              while (1) {
                m = h << 2;
                w = a + (m << 2) | 0;
                b = m | 1;
                E = a + (b << 2) | 0;
                S = a + (b + 1 << 2) | 0;
                b = a + ((m | 3) << 2) | 0;
                l = +u[w >> 2];
                v = +u[E >> 2] + (d - +u[o + (p << 2) >> 2] * 2.0 * l);
                k = +u[S >> 2];
                g = +u[b >> 2] + (c - +u[o + ((p | 1) << 2) >> 2] * 2.0 * k);
                u[E >> 2] = l;
                u[b >> 2] = k;
                u[w >> 2] = d;
                u[S >> 2] = c;
                S = h + 1 | 0;
                if ((S | 0) >= (i | 0)) {
                  break
                }
                c = g;
                d = v;
                h = S;
                p = p + 2 | 0
              }
              p = a + (s << 2) | 0;
              h = a + ((s | 1) << 2) | 0;
              if ((e | 0) > 0) {
                u[r + (e - 1 << 2) >> 2] = (g - +u[h >> 2] + (v + +u[p >> 2])) * .5
              }
              u[p >> 2] = v;
              u[h >> 2] = g;
              h = e + 1 | 0;
              if ((h | 0) > (t | 0)) {
                break
              } else {
                _ = 0.0;
                e = h
              }
            }
            f = n;
            return
          }
          function nt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = +t;
            var n = 0,
              i = 0.0,
              o = 0.0,
              a = 0,
              s = 0.0,
              l = 0.0,
              c = 0,
              f = 0.0,
              d = 0.0;
            if (+ u[e >> 2] < t) {
              u[e >> 2] = t
            }
            n = r - 1 | 0;
            r = e + (n << 2) | 0;
            i = 3.141592653589793 - t;
            if (+ u[r >> 2] > i) {
              u[r >> 2] = i
            }
            if ((n | 0) <= 1) {
              return
            }
            r = 1;
            i = +u[e + 4 >> 2];
            o = +u[e >> 2];
            while (1) {
              a = e + (r << 2) | 0;
              s = o + t;
              if (i < s) {
                u[a >> 2] = s;
                l = s
              } else {
                l = i
              }
              c = r + 1 | 0;
              s = +u[e + (c << 2) >> 2];
              if (l > s - t) {
                f = (l + s - t) * .5;
                u[a >> 2] = f;
                d = f
              } else {
                d = l
              }
              if ((c | 0) < (n | 0)) {
                r = c;
                i = s;
                o = d
              } else {
                break
              }
            }
            return
          }
          function it(e, r, t, n, i, o) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            var a = 0.0,
              s = 0.0;
            a = (+ (i | 0) + 1.0) / +(o | 0);
            if ((n | 0) <= 0) {
              return
            }
            s = 1.0 - a;
            o = 0;
            do {
              u[t + (o << 2) >> 2] = s * +u[e + (o << 2) >> 2] + a * +u[r + (o << 2) >> 2];
              o = o + 1 | 0
            } while ((o | 0) < (n | 0));
            return
          }
          function ot(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0.0,
              o = 0,
              a = 0,
              s = 0.0,
              l = 0,
              c = 0.0;
            n = t >> 2;
            if ((n | 0) == 0) {
              i = 0.0;
              return + i
            } else {
              o = r;
              a = n;
              s = 0.0;
              l = e
            }
            while (1) {
              e = a - 1 | 0;
              c = s + (+ u[l >> 2] * +u[o >> 2] + 0.0 + +u[l + 4 >> 2] * +u[o + 4 >> 2] + +u[l + 8 >> 2] * +u[o + 8 >> 2] + +u[l + 12 >> 2] * +u[o + 12 >> 2]);
              if ((e | 0) == 0) {
                i = c;
                break
              } else {
                o = o + 16 | 0;
                a = e;
                s = c;
                l = l + 16 | 0
              }
            }
            return + i
          }
          function at(e, r, t, n, i, o) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            var a = 0,
              s = 0,
              l = 0,
              c = 0.0,
              f = 0,
              d = 0,
              _ = 0.0;
            if ((i | 0) <= 0) {
              return
            }
            o = n >> 2;
            n = i - 1 | 0;
            if ((o | 0) == 0) {
              a = 0;
              do {
                u[t + (n - a << 2) >> 2] = 0.0;
                a = a + 1 | 0
              } while ((a | 0) < (i | 0));
              return
            } else {
              s = 0
            }
            do {
              a = r + (s << 2) | 0;
              l = o;
              c = 0.0;
              f = e;
              while (1) {
                d = l - 1 | 0;
                _ = c + (+ u[f >> 2] * +u[a >> 2] + 0.0 + +u[f + 4 >> 2] * +u[a + 4 >> 2] + +u[f + 8 >> 2] * +u[a + 8 >> 2] + +u[f + 12 >> 2] * +u[a + 12 >> 2]);
                if ((d | 0) == 0) {
                  break
                } else {
                  a = a + 16 | 0;
                  l = d;
                  c = _;
                  f = f + 16 | 0
                }
              }
              u[t + (n - s << 2) >> 2] = _;
              s = s + 1 | 0
            } while ((s | 0) < (i | 0));
            return
          }
          function st(e, r, t, n, i, a, s, l) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            var c = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0.0,
              v = 0,
              k = 0.0,
              g = 0,
              y = 0,
              M = 0.0,
              F = 0.0,
              A = 0.0,
              T = 0.0,
              O = 0.0,
              R = 0,
              C = 0.0,
              N = 0,
              P = 0,
              x = 0;
            l = f;
            c = t - r | 0;
            d = f;
            f = f + ((c + 2 | 0) * 4 | 0) | 0;
            f = f + 7 & -8;
            _ = c + 1 | 0;
            h = f;
            f = f + (_ * 4 | 0) | 0;
            f = f + 7 & -8;
            p = f;
            f = f + (s * 4 | 0) | 0;
            f = f + 7 & -8;
            m = f;
            f = f + (s * 4 | 0) | 0;
            f = f + 7 & -8;
            w = (s | 0) > 0;
            if (w) {
              Jn(m | 0, 0, s << 2 | 0);
              b = 0;
              do {
                u[p + (b << 2) >> 2] = -1.0;
                o[i + (b << 2) >> 2] = r;
                b = b + 1 | 0
              } while ((b | 0) < (s | 0))
            }
            b = n >> 2;
            E = (b | 0) == 0;
            if (E) {
              u[d >> 2] = 0.0;
              S = 0.0
            } else {
              v = b;
              k = 0.0;
              g = e + (- r << 2) | 0;
              while (1) {
                y = v - 1 | 0;
                M = +u[g >> 2];
                F = +u[g + 4 >> 2];
                A = +u[g + 8 >> 2];
                T = +u[g + 12 >> 2];
                O = k + (M * M + 0.0 + F * F + A * A + T * T);
                if ((y | 0) == 0) {
                  break
                } else {
                  v = y;
                  k = O;
                  g = g + 16 | 0
                }
              }
              u[d >> 2] = O;
              g = b;
              O = 0.0;
              v = e;
              while (1) {
                y = g - 1 | 0;
                k = +u[v >> 2];
                T = +u[v + 4 >> 2];
                A = +u[v + 8 >> 2];
                F = +u[v + 12 >> 2];
                M = O + (k * k + 0.0 + T * T + A * A + F * F);
                if ((y | 0) == 0) {
                  S = M;
                  break
                } else {
                  g = y;
                  O = M;
                  v = v + 16 | 0
                }
              }
            }
            if ((r | 0) < (t | 0)) {
              v = n - 1 | 0;
              n = r;
              do {
                g = n - r | 0;
                O = +u[e + (~n << 2) >> 2];
                M = +u[e + (v - n << 2) >> 2];
                F = +u[d + (g << 2) >> 2] + O * O - M * M;
                u[d + (g + 1 << 2) >> 2] = F < 0.0 ? 0.0 : F;
                n = n + 1 | 0
              } while ((n | 0) < (t | 0))
            }
            e: do {
              if ((_ | 0) > 0) {
                if (E) {
                  n = 0;
                  while (1) {
                    u[h + (c - n << 2) >> 2] = 0.0;
                    n = n + 1 | 0;
                    if ((n | 0) >= (_ | 0)) {
                      break e
                    }
                  }
                } else {
                  R = 0
                }
                do {
                  n = e + (R - t << 2) | 0;
                  v = b;
                  F = 0.0;
                  g = e;
                  while (1) {
                    y = v - 1 | 0;
                    C = F + (+ u[g >> 2] * +u[n >> 2] + 0.0 + +u[g + 4 >> 2] * +u[n + 4 >> 2] + +u[g + 8 >> 2] * +u[n + 8 >> 2] + +u[g + 12 >> 2] * +u[n + 12 >> 2]);
                    if ((y | 0) == 0) {
                      break
                    } else {
                      n = n + 16 | 0;
                      v = y;
                      F = C;
                      g = g + 16 | 0
                    }
                  }
                  u[h + (c - R << 2) >> 2] = C;
                  R = R + 1 | 0
                } while ((R | 0) < (_ | 0))
              }
            } while (0);
            if ((r | 0) <= (t | 0)) {
              _ = s - 1 | 0;
              R = m + (_ << 2) | 0;
              c = p + (_ << 2) | 0;
              e = i + (_ << 2) | 0;
              b = r;
              do {
                E = b - r | 0;
                C = +u[h + (E << 2) >> 2];
                F = C * C;
                C = +u[d + (E << 2) >> 2] + 1.0;
                e: do {
                  if (F * +u[R >> 2] > +u[c >> 2] * C) {
                    u[c >> 2] = F;
                    u[R >> 2] = C;
                    o[e >> 2] = b;
                    E = 0;
                    while (1) {
                      if ((E | 0) >= (_ | 0)) {
                        break e
                      }
                      N = m + (E << 2) | 0;
                      P = p + (E << 2) | 0;
                      if (F * +u[N >> 2] > +u[P >> 2] * C) {
                        x = _;
                        break
                      } else {
                        E = E + 1 | 0
                      }
                    }
                    while (1) {
                      g = x - 1 | 0;
                      u[p + (x << 2) >> 2] = +u[p + (g << 2) >> 2];
                      u[m + (x << 2) >> 2] = +u[m + (g << 2) >> 2];
                      o[i + (x << 2) >> 2] = o[i + (g << 2) >> 2];
                      if ((g | 0) > (E | 0)) {
                        x = g
                      } else {
                        break
                      }
                    }
                    u[P >> 2] = F;
                    u[N >> 2] = C;
                    o[i + (E << 2) >> 2] = b
                  }
                } while (0);
                b = b + 1 | 0
              } while ((b | 0) <= (t | 0))
            }
            if ((a | 0) == 0 | w ^ 1) {
              f = l;
              return
            }
            C = +V(S);
            w = 0;
            do {
              t = (o[i + (w << 2) >> 2] | 0) - r | 0;
              S = +u[h + (t << 2) >> 2] / (C * +V(+ u[d + (t << 2) >> 2]) + 10.0);
              u[a + (w << 2) >> 2] = S < 0.0 ? 0.0 : S;
              w = w + 1 | 0
            } while ((w | 0) < (s | 0));
            f = l;
            return
          }
          function lt(e, r, t, i, a, s, l, c, d, _, h, p, m, w, b, E, S, v, k, g) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            i = i | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            c = c | 0;
            d = d | 0;
            _ = +_;
            h = h | 0;
            p = p | 0;
            m = m | 0;
            w = w | 0;
            b = b | 0;
            E = E | 0;
            S = S | 0;
            v = v | 0;
            k = k | 0;
            g = g | 0;
            var y = 0,
              M = 0,
              F = 0,
              A = 0,
              T = 0,
              O = 0,
              R = 0,
              C = 0,
              N = 0,
              P = 0,
              x = 0,
              D = 0,
              I = 0,
              L = 0,
              B = 0,
              U = 0,
              q = 0,
              H = 0.0,
              z = 0,
              V = 0.0,
              j = 0,
              X = 0,
              K = 0,
              Y = 0,
              W = 0,
              G = 0.0;
            y = f;
            f = f + 8 | 0;
            M = y | 0;
            F = l + 4 | 0;
            A = o[F >> 2] | 0;
            T = 1 << A;
            O = l;
            R = (o[O >> 2] | 0) + (v << 2 << A) | 0;
            A = (S | 0) > 10 ? 10 : S;
            S = (A | 0) < 1 ? 1 : A;
            A = f;
            f = f + (S * 4 | 0) | 0;
            f = f + 7 & -8;
            if ((d | 0) < (c | 0)) {
              kr(m, 0, o[l + 8 >> 2] | 0);
              kr(m, 0, o[F >> 2] | 0);
              Jn(s | 0, 0, p << 2 | 0);
              C = c;
              f = y;
              return C | 0
            }
            v = d - c + 1 | 0;
            N = (S | 0) > (v | 0) ? v : S;
            if ((d | 0) == (c | 0)) {
              o[A >> 2] = d
            } else {
              st(r, c, d, p, A, 0, N, 0)
            }
            d = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            r = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            S = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            if ((N | 0) > 0) {
              v = s;
              P = p << 2;
              x = d;
              D = S;
              I = r;
              L = 0;
              _ = -1.0;
              B = 0;
              U = 0;
              while (1) {
                q = o[A + (U << 2) >> 2] | 0;
                Jn(v | 0, 0, P | 0);
                H = +ut(e, t, i, a, s, R, T, q, h, p, w, b, E, r, M, k, +u[g >> 2]);
                if (H < _ | _ < 0.0) {
                  Gn(x | 0, v | 0, P) | 0;
                  Gn(D | 0, I | 0, P) | 0;
                  z = o[M >> 2] | 0;
                  V = H;
                  j = q
                } else {
                  z = B;
                  V = _;
                  j = L
                }
                X = U + 1 | 0;
                if ((X | 0) < (N | 0)) {
                  L = j;
                  _ = V;
                  B = z;
                  U = X
                } else {
                  K = j;
                  Y = z;
                  W = q;
                  break
                }
              }
            } else {
              K = 0;
              Y = 0;
              W = 0
            }
            kr(m, K - c | 0, o[l + 8 >> 2] | 0);
            kr(m, Y, o[F >> 2] | 0);
            V = +u[g >> 2];
            if (V < 1024.0) {
              G = 32.0
            } else {
              G = V * .03125
            }
            u[g >> 2] = G * +(n[(o[O >> 2] | 0) + (Y << 2 | 3) | 0] | 0);
            Y = s;
            s = d;
            d = p << 2;
            Gn(Y | 0, s | 0, d) | 0;
            s = e;
            e = S;
            Gn(s | 0, e | 0, d) | 0;
            C = W;
            f = y;
            return C | 0
          }
          function ut(e, r, t, i, a, s, l, c, d, _, h, p, m, w, b, E, S) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            i = i | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            c = c | 0;
            d = d | 0;
            _ = _ | 0;
            h = h | 0;
            p = p | 0;
            m = m | 0;
            w = w | 0;
            b = b | 0;
            E = E | 0;
            S = +S;
            var v = 0,
              k = 0,
              g = 0,
              y = 0,
              M = 0,
              F = 0.0,
              A = 0,
              T = 0,
              O = 0,
              R = 0,
              C = 0,
              N = 0,
              P = 0,
              x = 0,
              D = 0,
              I = 0,
              L = 0,
              B = 0,
              U = 0,
              q = 0,
              H = 0.0,
              z = 0.0,
              V = 0.0,
              j = 0.0,
              X = 0.0,
              K = 0,
              Y = 0,
              W = 0.0,
              G = 0,
              Q = 0.0,
              Z = 0,
              J = 0,
              $ = 0.0,
              ee = 0,
              re = 0.0,
              te = 0.0,
              ne = 0.0,
              ie = 0.0,
              oe = 0.0,
              ae = 0,
              se = 0.0,
              le = 0,
              ue = 0.0,
              ce = 0,
              fe = 0.0,
              de = 0;
            v = f;
            f = f + 56 | 0;
            k = v | 0;
            g = v + 16 | 0;
            y = f;
            f = f + ((_ * 3 | 0) * 4 | 0) | 0;
            f = f + 7 & -8;
            M = f;
            f = f + (_ * 4 | 0) | 0;
            f = f + 7 & -8;
            F = S > 262144.0 ? 31.0 : 128.0;
            o[k >> 2] = y;
            A = y + (_ << 2) | 0;
            o[k + 4 >> 2] = A;
            T = _ << 1;
            O = y + (T << 2) | 0;
            o[k + 8 >> 2] = O;
            R = (_ | 0) > 0;
            do {
              if (R) {
                C = 0;
                do {
                  u[w + (C << 2) >> 2] = +u[e + (C << 2) >> 2];
                  C = C + 1 | 0
                } while ((C | 0) < (_ | 0));
                C = ze() | 0;
                N = f;
                f = f + (d * 4 | 0) | 0;
                f = f + 7 & -8;
                P = N;
                if (!R) {
                  x = C;
                  D = N;
                  I = P;
                  break
                }
                L = 1 - c | 0;
                B = 0;
                while (1) {
                  U = L + B | 0;
                  do {
                    if ((U | 0) < 0) {
                      u[M + (B << 2) >> 2] = +u[p + (U << 2) >> 2]
                    } else {
                      q = U - c | 0;
                      if ((q | 0) < 0) {
                        u[M + (B << 2) >> 2] = +u[p + (q << 2) >> 2];
                        break
                      } else {
                        u[M + (B << 2) >> 2] = 0.0;
                        break
                      }
                    }
                  } while (0);
                  U = B + 1 | 0;
                  if ((U | 0) < (_ | 0)) {
                    B = U
                  } else {
                    x = C;
                    D = N;
                    I = P;
                    break
                  }
                }
              } else {
                P = ze() | 0;
                N = f;
                f = f + (d * 4 | 0) | 0;
                f = f + 7 & -8;
                x = P;
                D = N;
                I = N
              }
            } while (0);
            if ((d | 0) > 0) {
              Jn(I | 0, 0, d << 2 | 0);
              jr(M, r, M, _, d, D, h);
              Jn(I | 0, 0, d << 2 | 0)
            } else {
              jr(M, r, M, _, d, D, h)
            }
            Vr(M, t, i, M, _, d, D, h);
            if (R) {
              h = 0;
              do {
                u[y + (T + h << 2) >> 2] = +u[M + (h << 2) >> 2];
                h = h + 1 | 0
              } while ((h | 0) < (_ | 0))
            }
            Be(x | 0);
            x = ~c;
            h = _ - 1 | 0;
            S = +u[p + (- c << 2) >> 2];
            H = +u[m >> 2];
            u[A >> 2] = S * H;
            if ((h | 0) > 0) {
              M = 0;
              while (1) {
                D = M + 1 | 0;
                u[y + (D + _ << 2) >> 2] = +u[y + (T + M << 2) >> 2] + S * +u[m + (D << 2) >> 2];
                if ((D | 0) < (h | 0)) {
                  M = D
                } else {
                  break
                }
              }
              S = +u[p + (x << 2) >> 2];
              u[y >> 2] = S * H;
              M = 0;
              while (1) {
                D = M + 1 | 0;
                u[y + (D << 2) >> 2] = +u[y + (M + _ << 2) >> 2] + S * +u[m + (D << 2) >> 2];
                if ((D | 0) < (h | 0)) {
                  M = D
                } else {
                  break
                }
              }
            } else {
              u[y >> 2] = +u[p + (x << 2) >> 2] * H
            }
            x = _ >> 2;
            M = (x | 0) == 0;
            if (M) {
              z = 0.0;
              V = 0.0;
              j = 0.0
            } else {
              h = w;
              m = x;
              H = 0.0;
              D = y;
              while (1) {
                d = m - 1 | 0;
                X = H + (+ u[D >> 2] * +u[h >> 2] + 0.0 + +u[D + 4 >> 2] * +u[h + 4 >> 2] + +u[D + 8 >> 2] * +u[h + 8 >> 2] + +u[D + 12 >> 2] * +u[h + 12 >> 2]);
                if ((d | 0) == 0) {
                  K = w;
                  Y = x;
                  W = 0.0;
                  G = A;
                  break
                }
                h = h + 16 | 0;
                m = d;
                H = X;
                D = D + 16 | 0
              }
              while (1) {
                D = Y - 1 | 0;
                Q = W + (+ u[G >> 2] * +u[K >> 2] + 0.0 + +u[G + 4 >> 2] * +u[K + 4 >> 2] + +u[G + 8 >> 2] * +u[K + 8 >> 2] + +u[G + 12 >> 2] * +u[K + 12 >> 2]);
                if ((D | 0) == 0) {
                  Z = w;
                  J = x;
                  $ = 0.0;
                  ee = O;
                  break
                } else {
                  K = K + 16 | 0;
                  Y = D;
                  W = Q;
                  G = G + 16 | 0
                }
              }
              while (1) {
                G = J - 1 | 0;
                W = $ + (+ u[ee >> 2] * +u[Z >> 2] + 0.0 + +u[ee + 4 >> 2] * +u[Z + 4 >> 2] + +u[ee + 8 >> 2] * +u[Z + 8 >> 2] + +u[ee + 12 >> 2] * +u[Z + 12 >> 2]);
                if ((G | 0) == 0) {
                  z = W;
                  V = Q;
                  j = X;
                  break
                } else {
                  Z = Z + 16 | 0;
                  J = G;
                  $ = W;
                  ee = ee + 16 | 0
                }
              }
            }
            ee = 0;
            do {
              J = k + (ee << 2) | 0;
              if (M) {
                Z = 0;
                do {
                  u[g + (Z * 12 | 0) + (ee << 2) >> 2] = 0.0;
                  u[g + (ee * 12 | 0) + (Z << 2) >> 2] = 0.0;
                  Z = Z + 1 | 0
                } while ((Z | 0) <= (ee | 0))
              } else {
                Z = 0;
                do {
                  G = o[k + (Z << 2) >> 2] | 0;
                  Y = x;
                  $ = 0.0;
                  K = o[J >> 2] | 0;
                  while (1) {
                    O = Y - 1 | 0;
                    re = $ + (+ u[K >> 2] * +u[G >> 2] + 0.0 + +u[K + 4 >> 2] * +u[G + 4 >> 2] + +u[K + 8 >> 2] * +u[G + 8 >> 2] + +u[K + 12 >> 2] * +u[G + 12 >> 2]);
                    if ((O | 0) == 0) {
                      break
                    } else {
                      G = G + 16 | 0;
                      Y = O;
                      $ = re;
                      K = K + 16 | 0
                    }
                  }
                  u[g + (Z * 12 | 0) + (ee << 2) >> 2] = re;
                  u[g + (ee * 12 | 0) + (Z << 2) >> 2] = re;
                  Z = Z + 1 | 0
                } while ((Z | 0) <= (ee | 0))
              }
              ee = ee + 1 | 0
            } while ((ee | 0) < 3);
            re = +u[g + 20 >> 2];
            $ = +u[g + 4 >> 2];
            X = +u[g + 8 >> 2];
            ee = (E | 0) < 2 ? 2 : E;
            Q = (((ee | 0) > 30 ? .6 : +(ee | 0) * .02) + 1.0) * .5;
            W = Q * +u[g + 32 >> 2];
            H = Q * +u[g + 16 >> 2];
            S = Q * +u[g >> 2];
            if ((l | 0) > 0) {
              Q = -999999986991104.0;
              g = 0;
              ee = 0;
              while (1) {
                E = ee << 2;
                te = +(n[s + E | 0] | 0) + 32.0;
                ne = +(n[s + (E | 1) | 0] | 0) + 32.0;
                ie = +(n[s + (E | 2) | 0] | 0) + 32.0;
                oe = z * te * 64.0 + 0.0 + V * ne * 64.0 + j * ie * 64.0 - re * te * ne - $ * ne * ie - X * te * ie - W * te * te - H * ne * ne - S * ie * ie;
                do {
                  if (oe > Q) {
                    if (+ (n[s + (E | 3) | 0] | 0) > F) {
                      ae = g;
                      se = Q;
                      break
                    }
                    ae = ee;
                    se = oe
                  } else {
                    ae = g;
                    se = Q
                  }
                } while (0);
                E = ee + 1 | 0;
                if ((E | 0) < (l | 0)) {
                  Q = se;
                  g = ae;
                  ee = E
                } else {
                  le = ae;
                  break
                }
              }
            } else {
              le = 0
            }
            ae = le << 2;
            se = +(n[s + ae | 0] | 0) * .015625 + .5;
            Q = +(n[s + (ae | 1) | 0] | 0) * .015625 + .5;
            F = +(n[s + (ae | 2) | 0] | 0) * .015625 + .5;
            o[b >> 2] = le;
            Jn(a | 0, 0, _ << 2 | 0);
            le = c + 1 | 0;
            b = (le | 0) < (_ | 0) ? le : _;
            if ((b | 0) > 0) {
              ae = 0;
              do {
                s = a + (ae << 2) | 0;
                u[s >> 2] = +u[s >> 2] + F * +u[p + (ae - le << 2) >> 2];
                ae = ae + 1 | 0
              } while ((ae | 0) < (b | 0))
            }
            ae = le + c | 0;
            le = (ae | 0) < (_ | 0) ? ae : _;
            if ((b | 0) < (le | 0)) {
              s = b;
              do {
                b = a + (s << 2) | 0;
                u[b >> 2] = +u[b >> 2] + F * +u[p + (s - ae << 2) >> 2];
                s = s + 1 | 0
              } while ((s | 0) < (le | 0))
            }
            le = (c | 0) < (_ | 0) ? c : _;
            if ((le | 0) > 0) {
              s = 0;
              do {
                ae = a + (s << 2) | 0;
                u[ae >> 2] = +u[ae >> 2] + Q * +u[p + (s - c << 2) >> 2];
                s = s + 1 | 0
              } while ((s | 0) < (le | 0))
            }
            s = c << 1;
            ae = (s | 0) < (_ | 0) ? s : _;
            if ((le | 0) < (ae | 0)) {
              b = le;
              do {
                le = a + (b << 2) | 0;
                u[le >> 2] = +u[le >> 2] + Q * +u[p + (b - s << 2) >> 2];
                b = b + 1 | 0
              } while ((b | 0) < (ae | 0))
            }
            ae = c - 1 | 0;
            b = (ae | 0) < (_ | 0) ? ae : _;
            if ((b | 0) > 0) {
              s = 0;
              do {
                le = a + (s << 2) | 0;
                u[le >> 2] = +u[le >> 2] + se * +u[p + (s - ae << 2) >> 2];
                s = s + 1 | 0
              } while ((s | 0) < (b | 0))
            }
            s = ae + c | 0;
            c = (s | 0) < (_ | 0) ? s : _;
            if ((b | 0) < (c | 0)) {
              ae = b;
              do {
                b = a + (ae << 2) | 0;
                u[b >> 2] = +u[b >> 2] + se * +u[p + (ae - s << 2) >> 2];
                ae = ae + 1 | 0
              } while ((ae | 0) < (c | 0))
            }
            if (R) {
              R = 0;
              do {
                c = w + (R << 2) | 0;
                u[c >> 2] = +u[c >> 2] - (se * +u[y + (T + R << 2) >> 2] + Q * +u[y + (R + _ << 2) >> 2] + F * +u[y + (R << 2) >> 2]);
                R = R + 1 | 0
              } while ((R | 0) < (_ | 0))
            }
            if (M) {
              ue = 0.0;
              f = v;
              return + ue
            } else {
              ce = x;
              fe = 0.0;
              de = w
            }
            while (1) {
              w = ce - 1 | 0;
              F = +u[de >> 2];
              Q = +u[de + 4 >> 2];
              se = +u[de + 8 >> 2];
              S = +u[de + 12 >> 2];
              H = fe + (F * F + 0.0 + Q * Q + se * se + S * S);
              if ((w | 0) == 0) {
                ue = H;
                break
              } else {
                ce = w;
                fe = H;
                de = de + 16 | 0
              }
            }
            f = v;
            return + ue
          }
          function ct(e, r, t, i, a, s, l, c, f, d, _, h, p, m, w) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            i = i | 0;
            a = +a;
            s = s | 0;
            l = l | 0;
            c = c | 0;
            f = f | 0;
            d = d | 0;
            _ = _ | 0;
            h = h | 0;
            p = p | 0;
            m = +m;
            w = w | 0;
            var b = 0,
              E = 0.0,
              S = 0.0,
              v = 0.0,
              k = 0.0,
              g = 0.0,
              y = 0.0,
              M = 0.0,
              F = 0.0,
              A = 0.0,
              T = 0.0,
              O = 0.0,
              R = 0.0,
              C = 0;
            _ = s + 4 | 0;
            i = o[s >> 2] | 0;
            b = re(4 << o[_ >> 2], w) | 0;
            w = (yr(d, o[s + 8 >> 2] | 0) | 0) + t | 0;
            t = (yr(d, o[_ >> 2] | 0) | 0) << 2;
            a = +(n[i + (t + b) | 0] | 0) * .015625 + .5;
            E = +(n[i + ((t | 1) + b) | 0] | 0) * .015625 + .5;
            S = +(n[i + ((t | 2) + b) | 0] | 0) * .015625 + .5;
            do {
              if ((h | 0) != 0 & (w | 0) > (p | 0)) {
                v = m;
                if ((h | 0) < 4) {
                  k = v
                } else {
                  k = v * .5
                }
                v = k;
                g = v > .95 ? .949999988079071 : v;
                if (E < 0.0) {
                  y = -0.0 - E
                } else {
                  y = E
                }
                v = a;
                if (a > 0.0) {
                  M = v
                } else {
                  M = v * -.5
                }
                v = S;
                if (S > 0.0) {
                  F = v
                } else {
                  F = v * -.5
                }
                v = y + M + F;
                if (v <= g) {
                  A = a;
                  T = E;
                  O = S;
                  break
                }
                R = g / v;
                A = R * a;
                T = R * E;
                O = R * S
              } else {
                A = a;
                T = E;
                O = S
              }
            } while (0);
            o[c >> 2] = w;
            u[f >> 2] = A;
            u[f + 4 >> 2] = T;
            u[f + 8 >> 2] = O;
            Jn(r | 0, 0, l << 2 | 0);
            f = w + 1 | 0;
            c = (f | 0) < (l | 0) ? f : l;
            if ((c | 0) > 0) {
              h = 0;
              do {
                p = r + (h << 2) | 0;
                u[p >> 2] = +u[p >> 2] + O * +u[e + (h - f << 2) >> 2];
                h = h + 1 | 0
              } while ((h | 0) < (c | 0))
            }
            h = f + w | 0;
            f = (h | 0) < (l | 0) ? h : l;
            if ((c | 0) < (f | 0)) {
              p = c;
              do {
                c = r + (p << 2) | 0;
                u[c >> 2] = +u[c >> 2] + O * +u[e + (p - h << 2) >> 2];
                p = p + 1 | 0
              } while ((p | 0) < (f | 0))
            }
            f = (w | 0) < (l | 0) ? w : l;
            if ((f | 0) > 0) {
              p = 0;
              do {
                h = r + (p << 2) | 0;
                u[h >> 2] = +u[h >> 2] + T * +u[e + (p - w << 2) >> 2];
                p = p + 1 | 0
              } while ((p | 0) < (f | 0))
            }
            p = w << 1;
            h = (p | 0) < (l | 0) ? p : l;
            if ((f | 0) < (h | 0)) {
              c = f;
              do {
                f = r + (c << 2) | 0;
                u[f >> 2] = +u[f >> 2] + T * +u[e + (c - p << 2) >> 2];
                c = c + 1 | 0
              } while ((c | 0) < (h | 0))
            }
            h = w - 1 | 0;
            c = (h | 0) < (l | 0) ? h : l;
            if ((c | 0) > 0) {
              p = 0;
              do {
                f = r + (p << 2) | 0;
                u[f >> 2] = +u[f >> 2] + A * +u[e + (p - h << 2) >> 2];
                p = p + 1 | 0
              } while ((p | 0) < (c | 0))
            }
            p = h + w | 0;
            w = (p | 0) < (l | 0) ? p : l;
            if ((c | 0) < (w | 0)) {
              C = c
            } else {
              return
            }
            do {
              c = r + (C << 2) | 0;
              u[c >> 2] = +u[c >> 2] + A * +u[e + (C - p << 2) >> 2];
              C = C + 1 | 0
            } while ((C | 0) < (w | 0));
            return
          }
          function ft(e, r, t, n, i, o, a, s, l, c, d, _, h, p, m, w, b, E, S, v) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            c = +c;
            d = d | 0;
            _ = _ | 0;
            h = h | 0;
            p = p | 0;
            m = m | 0;
            w = w | 0;
            b = b | 0;
            E = E | 0;
            S = S | 0;
            v = v | 0;
            var k = 0.0,
              g = 0;
            v = f;
            S = o;
            E = f;
            f = f + (_ * 4 | 0) | 0;
            f = f + 7 & -8;
            b = E;
            k = c > .99 ? .9900000095367432 : c;
            w = (_ | 0) > 0;
            if (w & (s | 0) > 0) {
              h = -_ | 0;
              l = -s | 0;
              a = h >>> 0 > l >>> 0 ? h : l;
              l = 0;
              do {
                u[o + (l << 2) >> 2] = k * +u[m + (l - s << 2) >> 2];
                l = l + 1 | 0
              } while ((l | 0) < (_ | 0) & (l | 0) < (s | 0));
              g = -a | 0
            } else {
              g = 0
            }
            if ((g | 0) < (_ | 0)) {
              a = g;
              do {
                u[o + (a << 2) >> 2] = k * +u[o + (a - s << 2) >> 2];
                a = a + 1 | 0
              } while ((a | 0) < (_ | 0))
            }
            if (!w) {
              Kr(E, t, n, i, E, _, d, p);
              f = v;
              return s | 0
            }
            w = _ << 2;
            Gn(b | 0, S | 0, w) | 0;
            Kr(E, t, n, i, E, _, d, p);
            p = 0;
            do {
              d = e + (p << 2) | 0;
              u[d >> 2] = +u[d >> 2] - +u[E + (p << 2) >> 2];
              p = p + 1 | 0
            } while ((p | 0) < (_ | 0));
            f = v;
            return s | 0
          }
          function dt(e, r, t, n, i, a, s, l, c, f, d, _, h, p, m) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = +i;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            c = c | 0;
            f = f | 0;
            d = d | 0;
            _ = _ | 0;
            h = h | 0;
            p = +p;
            m = m | 0;
            p = i > .99 ? .9900000095367432 : i;
            if ((s | 0) > 0) {
              m = 0;
              do {
                i = p * +u[e + (m - t << 2) >> 2];
                u[r + (m << 2) >> 2] = i;
                u[e + (m << 2) >> 2] = i;
                m = m + 1 | 0
              } while ((m | 0) < (s | 0))
            }
            o[l >> 2] = t;
            u[c + 8 >> 2] = 0.0;
            u[c >> 2] = 0.0;
            u[c + 4 >> 2] = p;
            return
          }
          function _t(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            return Mi[o[e + 4 >> 2] & 31](o[e >> 2] | 0, r, t) | 0
          }
          function ht(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0,
              a = 0,
              s = 0;
            n = f;
            if ((r | 0) == 0) {
              o[t >> 2] = o[e + 4 >> 2] << 1;
              i = 0;
              f = n;
              return i | 0
            } else if ((r | 0) == 1) {
              a = t;
              t = o[a >> 2] | 0;
              if ((t | 0) == 0) {
                o[a >> 2] = 4;
                i = 0;
                f = n;
                return i | 0
              }
              s = o[e + 32 + (t << 2) >> 2] | 0;
              if ((s | 0) == 0) {
                o[a >> 2] = -1;
                i = 0;
                f = n;
                return i | 0
              } else {
                o[a >> 2] = o[s + 52 >> 2];
                i = 0;
                f = n;
                return i | 0
              }
            } else {
              ve(o[p >> 2] | 0, 13424, (s = f, f = f + 16 | 0, o[s >> 2] = 13952, o[s + 8 >> 2] = r, s) | 0) | 0;
              f = s;
              i = -1;
              f = n;
              return i | 0
            }
            return 0
          }
          function pt(e) {
            e = e | 0;
            var r = 0;
            if (e >>> 0 > 2 >>> 0) {
              r = 0;
              return r | 0
            }
            r = o[1336 + (e << 2) >> 2] | 0;
            return r | 0
          }
          function mt(e) {
            e = e | 0;
            var r = 0,
              t = 0,
              n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              f = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0;
            r = o[e >> 2] | 0;
            t = Cn(228, 1) | 0;
            if ((t | 0) == 0) {
              n = 0;
              return n | 0
            }
            o[t + 68 >> 2] = 0;
            o[t >> 2] = e;
            e = r;
            i = o[e >> 2] | 0;
            o[t + 8 >> 2] = i;
            a = r + 4 | 0;
            s = (o[e >> 2] | 0) / (o[a >> 2] | 0) | 0;
            l = t + 16 | 0;
            o[l >> 2] = s;
            c = o[a >> 2] | 0;
            o[t + 12 >> 2] = c;
            o[t + 20 >> 2] = i + c;
            i = o[r + 8 >> 2] | 0;
            a = t + 24 | 0;
            o[a >> 2] = i;
            u[t + 56 >> 2] = +u[r + 20 >> 2];
            u[t + 60 >> 2] = +u[r + 24 >> 2];
            o[t + 28 >> 2] = o[r + 12 >> 2];
            f = r + 16 | 0;
            o[t + 32 >> 2] = o[f >> 2];
            u[t + 64 >> 2] = +u[r + 28 >> 2];
            o[t + 208 >> 2] = r + 32;
            d = o[r + 96 >> 2] | 0;
            o[t + 216 >> 2] = d;
            o[t + 212 >> 2] = d;
            o[t + 40 >> 2] = 1;
            o[t + 204 >> 2] = 1;
            u[t + 36 >> 2] = 1024.0;
            o[t + 72 >> 2] = Cn(c << 2, 1) | 0;
            c = Cn(((o[f >> 2] | 0) + (o[e >> 2] | 0) << 2) + 8 | 0, 1) | 0;
            o[t + 76 >> 2] = c;
            o[t + 80 >> 2] = c + ((o[f >> 2] | 0) + 2 << 2);
            c = Cn(((o[f >> 2] | 0) + (o[e >> 2] | 0) << 2) + 8 | 0, 1) | 0;
            o[t + 84 >> 2] = c;
            o[t + 88 >> 2] = c + ((o[f >> 2] | 0) + 2 << 2);
            o[t + 92 >> 2] = 2432;
            o[t + 96 >> 2] = 3232;
            f = i << 2;
            c = Cn(f, 1) | 0;
            e = t + 100 | 0;
            o[e >> 2] = c;
            o[t + 104 >> 2] = Cn(f, 1) | 0;
            o[t + 4 >> 2] = 1;
            if ((i | 0) > 0) {
              f = 0;
              d = i;
              r = c;
              while (1) {
                c = f + 1 | 0;
                u[r + (f << 2) >> 2] = +(c | 0) * 3.1415927410125732 / +(d + 1 | 0);
                _ = o[a >> 2] | 0;
                if ((c | 0) >= (_ | 0)) {
                  break
                }
                f = c;
                d = _;
                r = o[e >> 2] | 0
              }
              h = _;
              p = o[l >> 2] | 0
            } else {
              h = i;
              p = s
            }
            o[t + 108 >> 2] = Cn(h << 2, 1) | 0;
            s = h << 2;
            o[t + 112 >> 2] = Cn(s, 1) | 0;
            o[t + 116 >> 2] = Cn(s, 1) | 0;
            o[t + 120 >> 2] = Cn(s, 1) | 0;
            o[t + 124 >> 2] = Cn(s, 1) | 0;
            s = p << 2;
            o[t + 136 >> 2] = Cn(s, 1) | 0;
            o[t + 140 >> 2] = 0;
            o[t + 52 >> 2] = Cn(s, 1) | 0;
            s = Cn(64, 1) | 0;
            o[t + 144 >> 2] = s;
            kn(s);
            u[t + 148 >> 2] = 8.0;
            Jn(t + 156 | 0, 0, 32);
            o[t + 200 >> 2] = 2;
            o[t + 192 >> 2] = 2;
            o[t + 196 >> 2] = 8e3;
            o[t + 220 >> 2] = 0;
            o[t + 224 >> 2] = 1;
            n = t;
            return n | 0
          }
          function wt(e) {
            e = e | 0;
            var r = 0;
            Rn(o[e + 72 >> 2] | 0);
            Rn(o[e + 76 >> 2] | 0);
            Rn(o[e + 104 >> 2] | 0);
            Rn(o[e + 84 >> 2] | 0);
            Rn(o[e + 100 >> 2] | 0);
            Rn(o[e + 108 >> 2] | 0);
            Rn(o[e + 112 >> 2] | 0);
            Rn(o[e + 116 >> 2] | 0);
            Rn(o[e + 120 >> 2] | 0);
            Rn(o[e + 124 >> 2] | 0);
            Rn(o[e + 136 >> 2] | 0);
            Rn(o[e + 52 >> 2] | 0);
            r = e + 144 | 0;
            yn(o[r >> 2] | 0);
            Rn(o[r >> 2] | 0);
            Rn(e);
            return
          }
          function bt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0,
              y = 0,
              M = 0,
              F = 0,
              A = 0,
              T = 0,
              O = 0,
              R = 0,
              C = 0,
              N = 0,
              P = 0,
              x = 0,
              D = 0,
              I = 0,
              L = 0,
              B = 0,
              U = 0,
              q = 0,
              z = 0,
              j = 0.0,
              X = 0.0,
              K = 0,
              Y = 0,
              W = 0,
              G = 0.0,
              Q = 0,
              Z = 0,
              ee = 0,
              te = 0.0,
              ne = 0.0,
              ie = 0.0,
              oe = 0.0,
              ae = 0.0,
              se = 0,
              le = 0.0,
              ue = 0.0,
              ce = 0.0,
              fe = 0,
              de = 0,
              _e = 0.0,
              he = 0,
              pe = 0,
              me = 0,
              we = 0,
              be = 0,
              Ee = 0,
              Se = 0,
              ve = 0,
              ke = 0.0,
              ge = 0,
              ye = 0,
              Me = 0,
              Fe = 0,
              Ae = 0,
              Te = 0,
              Oe = 0,
              Re = 0,
              Ce = 0,
              Ne = 0,
              Pe = 0,
              xe = 0,
              De = 0,
              Ie = 0.0,
              Le = 0,
              Ue = 0,
              qe = 0,
              He = 0,
              Ve = 0,
              je = 0,
              Xe = 0,
              Ke = 0,
              Ye = 0,
              We = 0,
              Ge = 0.0,
              Qe = 0,
              Ze = 0,
              Je = 0,
              $e = 0,
              er = 0;
            n = f;
            f = f + 72 | 0;
            i = n | 0;
            a = n + 24 | 0;
            s = n + 48 | 0;
            l = n + 56 | 0;
            c = n + 64 | 0;
            d = r;
            _ = o[e + 68 >> 2] | 0;
            h = e + 24 | 0;
            p = o[h >> 2] | 0;
            m = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            w = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            b = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            E = b;
            S = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            v = S;
            k = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            g = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            y = g;
            M = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            F = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            A = f;
            f = f + (p * 4 | 0) | 0;
            f = f + 7 & -8;
            p = o[e + 76 >> 2] | 0;
            T = e + 8 | 0;
            O = e + 32 | 0;
            Qn(p | 0, p + (o[T >> 2] << 2) | 0, (o[O >> 2] << 2) + 8 | 0);
            p = o[e + 84 >> 2] | 0;
            Qn(p | 0, p + (o[T >> 2] << 2) | 0, (o[O >> 2] << 2) + 8 | 0);
            if ((o[e + 224 >> 2] | 0) != 0) {
              Br(d, d, o[T >> 2] | 0, (o[e + 220 >> 2] | 0) != 0 ? 2 : 0, e + 128 | 0)
            }
            p = e + 20 | 0;
            R = o[p >> 2] | 0;
            C = ze() | 0;
            N = f;
            f = f + (R * 4 | 0) | 0;
            f = f + 7 & -8;
            R = (o[h >> 2] | 0) + 1 | 0;
            P = f;
            f = f + (R * 4 | 0) | 0;
            f = f + 7 & -8;
            x = o[p >> 2] | 0;
            D = o[T >> 2] | 0;
            I = x - D | 0;
            if ((I | 0) > 0) {
              L = o[e + 72 >> 2] | 0;
              B = o[e + 92 >> 2] | 0;
              U = 0;
              while (1) {
                u[N + (U << 2) >> 2] = +u[L + (U << 2) >> 2] * +u[B + (U << 2) >> 2];
                q = U + 1 | 0;
                if ((q | 0) < (I | 0)) {
                  U = q
                } else {
                  z = q;
                  break
                }
              }
            } else {
              z = 0
            }
            if ((z | 0) < (x | 0)) {
              U = o[e + 92 >> 2] | 0;
              I = z;
              do {
                u[N + (I << 2) >> 2] = +u[d + (I - x + D << 2) >> 2] * +u[U + (I << 2) >> 2];
                I = I + 1 | 0
              } while ((I | 0) < (x | 0))
            }
            et(N, P, R, x);
            j = +u[P >> 2];
            X = j + j * +u[e + 64 >> 2];
            u[P >> 2] = X;
            x = o[h >> 2] | 0;
            R = x + 1 | 0;
            e: do {
              if ((R | 0) > 0) {
                N = o[e + 96 >> 2] | 0;
                I = 0;
                j = X;
                while (1) {
                  u[P + (I << 2) >> 2] = j * +u[N + (I << 2) >> 2];
                  U = I + 1 | 0;
                  if ((U | 0) >= (R | 0)) {
                    break e
                  }
                  I = U;
                  j = +u[P + (U << 2) >> 2]
                }
              }
            } while (0); + $r(m, P, x);
            x = rt(m, o[h >> 2] | 0, S, 10, .20000000298023224, _) | 0;
            m = o[h >> 2] | 0;
            if ((x | 0) != (m | 0) & (m | 0) > 0) {
              x = o[e + 100 >> 2] | 0;
              P = 0;
              do {
                u[S + (P << 2) >> 2] = +u[x + (P << 2) >> 2];
                P = P + 1 | 0
              } while ((P | 0) < (m | 0))
            }
            Be(C | 0);
            C = (o[p >> 2] | 0) - (o[T >> 2] | 0) | 0;
            m = e + 4 | 0;
            do {
              if ((o[m >> 2] | 0) == 0) {
                P = o[e + 16 >> 2] | 0;
                it(o[e + 100 >> 2] | 0, S, g, o[h >> 2] | 0, P, P << 1);
                K = o[h >> 2] | 0
              } else {
                P = o[h >> 2] | 0;
                if ((P | 0) <= 0) {
                  K = P;
                  break
                }
                x = (P | 0) > 1 ? P << 2 : 4;
                Gn(y | 0, v | 0, x) | 0;
                K = P
              }
            } while (0);
            nt(g, K, .0020000000949949026);
            tt(g, F, o[h >> 2] | 0, _);
            K = e + 212 | 0;
            v = e + 208 | 0;
            y = o[(o[v >> 2] | 0) + (o[K >> 2] << 2) >> 2] | 0;
            do {
              if ((y | 0) == 0) {
                Y = 815
              } else {
                if ((o[e + 192 >> 2] | 0) > 2) {
                  if ((o[y + 8 >> 2] | 0) < 3) {
                    Y = 815;
                    break
                  }
                }
                if ((o[y + 4 >> 2] | 0) != 0) {
                  Y = 815;
                  break
                }
                if ((o[y >> 2] | 0) != -1) {
                  Y = 815;
                  break
                }
                if ((o[e + 156 >> 2] | 0) != 0) {
                  Y = 815;
                  break
                }
                if ((o[e + 164 >> 2] | 0) != 0) {
                  Y = 815;
                  break
                }
                W = 0;
                G = 0.0;
                Q = e + 72 | 0;
                Z = C << 2
              }
            } while (0);
            if ((Y | 0) == 815) {
              Ir(+ u[e + 56 >> 2], F, w, o[h >> 2] | 0);
              Ir(+ u[e + 60 >> 2], F, b, o[h >> 2] | 0);
              y = e + 88 | 0;
              P = o[y >> 2] | 0;
              x = e + 72 | 0;
              R = o[x >> 2] | 0;
              I = C << 2;
              Gn(P | 0, R | 0, I) | 0;
              R = (o[y >> 2] | 0) + (C << 2) | 0;
              P = (o[T >> 2] | 0) - C << 2;
              Gn(R | 0, r | 0, P) | 0;
              P = o[y >> 2] | 0;
              Vr(P, w, b, P, o[T >> 2] | 0, o[h >> 2] | 0, o[e + 116 >> 2] | 0, _);
              P = i | 0;
              R = a | 0;
              st(o[y >> 2] | 0, o[e + 28 >> 2] | 0, o[O >> 2] | 0, o[T >> 2] | 0, P, R, 6, _);
              X = +u[R >> 2];
              j = X * .85;
              R = o[P >> 2] | 0;
              P = 1;
              while (1) {
                e: do {
                  if (+ u[a + (P << 2) >> 2] > j) {
                    y = o[i + (P << 2) >> 2] | 0;
                    N = (y << 1) - R | 0;
                    do {
                      if ((((N | 0) < 0 ? -N | 0 : N) | 0) >= 3) {
                        U = (y * 3 | 0) - R | 0;
                        if ((((U | 0) < 0 ? -U | 0 : U) | 0) < 4) {
                          break
                        }
                        U = (y << 2) - R | 0;
                        if ((((U | 0) < 0 ? -U | 0 : U) | 0) < 5) {
                          break
                        }
                        U = (y * 5 | 0) - R | 0;
                        if ((((U | 0) < 0 ? -U | 0 : U) | 0) >= 6) {
                          ee = R;
                          break e
                        }
                      }
                    } while (0);
                    ee = y
                  } else {
                    ee = R
                  }
                } while (0);
                N = P + 1 | 0;
                if ((N | 0) < 6) {
                  R = ee;
                  P = N
                } else {
                  W = ee;
                  G = X;
                  Q = x;
                  Z = I;
                  break
                }
              }
            }
            I = e + 80 | 0;
            x = o[I >> 2] | 0;
            ee = o[Q >> 2] | 0;
            Gn(x | 0, ee | 0, Z) | 0;
            Z = (o[I >> 2] | 0) + (C << 2) | 0;
            ee = (o[T >> 2] | 0) - C << 2;
            Gn(Z | 0, r | 0, ee) | 0;
            ee = o[I >> 2] | 0;
            Xr(ee, F, ee, o[T >> 2] | 0, o[h >> 2] | 0, o[e + 120 >> 2] | 0, _);
            X = +zr(o[I >> 2] | 0, o[T >> 2] | 0);
            if ((o[K >> 2] | 0) != 1 & (W | 0) > 0) {
              te = X * +V(1.0 - G * G * .8) * 1.1
            } else {
              te = X
            }
            ee = o[e + 144 >> 2] | 0;
            do {
              if ((ee | 0) == 0) {
                Y = 866
              } else {
                r = e + 156 | 0;
                if ((o[r >> 2] | 0) == 0) {
                  if ((o[e + 164 >> 2] | 0) == 0) {
                    Y = 866;
                    break
                  }
                }
                Z = o[h >> 2] | 0;
                if ((Z | 0) > 0) {
                  C = o[e + 100 >> 2] | 0;
                  X = 0.0;
                  x = 0;
                  do {
                    j = +u[C + (x << 2) >> 2] - +u[S + (x << 2) >> 2];
                    X = X + j * j;
                    x = x + 1 | 0
                  } while ((x | 0) < (Z | 0));
                  ne = X
                } else {
                  ne = 0.0
                }
                Z = e + 176 | 0;
                do {
                  if ((o[Z >> 2] | 0) != 0) {
                    j = +u[e + 180 >> 2];
                    do {
                      if (+ u[e + 184 >> 2] * j > 0.0) {
                        ie = j * -1.0e-5 / (+ u[e + 188 >> 2] + 1.0);
                        oe = ie > .05 ? .05000000074505806 : ie;
                        if (oe >= -.05) {
                          ae = oe;
                          break
                        }
                        ae = -.05000000074505806
                      } else {
                        ae = 0.0
                      }
                    } while (0);
                    y = e + 148 | 0;
                    j = ae + +u[y >> 2];
                    oe = j > 10.0 ? 10.0 : j;
                    u[y >> 2] = oe;
                    if (oe >= 0.0) {
                      break
                    }
                    u[y >> 2] = 0.0
                  }
                } while (0);
                X = +gn(ee, d, o[T >> 2] | 0, W, G);
                u[e + 152 >> 2] = X;
                if ((o[r >> 2] | 0) == 0) {
                  y = e + 172 | 0;
                  e: do {
                    if (X < 2.0) {
                      x = o[y >> 2] | 0;
                      do {
                        if (!((x | 0) == 0 | ne > .05)) {
                          if ((o[e + 168 >> 2] | 0) == 0 | (x | 0) > 20) {
                            break
                          }
                          o[y >> 2] = x + 1;
                          se = 0;
                          break e
                        }
                      } while (0);
                      o[y >> 2] = 1;
                      se = 1
                    } else {
                      o[y >> 2] = 0;
                      se = o[e + 216 >> 2] | 0
                    }
                  } while (0);
                  o[K >> 2] = se;
                  break
                }
                o[s >> 2] = 8;
                oe = +u[e + 148 >> 2];
                y = ~~ + H(oe);
                j = oe - +(y | 0);
                r = y + 1 | 0;
                ie = +(r | 0) - oe;
                if ((y | 0) == 10) {
                  x = 0;
                  oe = 100.0;
                  C = 8;
                  while (1) {
                    le = +u[392 + (C * 44 | 0) >> 2];
                    do {
                      if (X > le) {
                        ue = X - le;
                        if (ue >= oe) {
                          ce = oe;
                          fe = x;
                          break
                        }
                        ce = ue;
                        fe = C
                      } else {
                        ce = oe;
                        fe = x
                      }
                    } while (0);
                    P = C - 1 | 0;
                    if ((P | 0) == 0) {
                      de = fe;
                      break
                    } else {
                      x = fe;
                      oe = ce;
                      C = P
                    }
                  }
                } else {
                  C = 0;
                  oe = 100.0;
                  x = 8;
                  while (1) {
                    le = j * +u[352 + (x * 44 | 0) + (r << 2) >> 2] + ie * +u[352 + (x * 44 | 0) + (y << 2) >> 2];
                    do {
                      if (X > le) {
                        ue = X - le;
                        if (ue >= oe) {
                          _e = oe;
                          he = C;
                          break
                        }
                        _e = ue;
                        he = x
                      } else {
                        _e = oe;
                        he = C
                      }
                    } while (0);
                    P = x - 1 | 0;
                    if ((P | 0) == 0) {
                      de = he;
                      break
                    } else {
                      C = he;
                      oe = _e;
                      x = P
                    }
                  }
                }
                o[s >> 2] = de;
                x = e + 172 | 0;
                e: do {
                  if ((de | 0) == 0) {
                    C = o[x >> 2] | 0;
                    do {
                      if (!((C | 0) == 0 | ne > .05)) {
                        if ((o[e + 168 >> 2] | 0) == 0 | (C | 0) > 20) {
                          break
                        }
                        o[s >> 2] = 0;
                        o[x >> 2] = C + 1;
                        break e
                      }
                    } while (0);
                    o[s >> 2] = 1;
                    o[x >> 2] = 1
                  } else {
                    o[x >> 2] = 0
                  }
                } while (0);
                x = s;
                Wt(e, 6, x) | 0;
                x = e + 160 | 0;
                do {
                  if ((o[x >> 2] | 0) > 0) {
                    C = l;
                    Wt(e, 19, C) | 0;
                    y = o[x >> 2] | 0;
                    if ((o[l >> 2] | 0) <= (y | 0)) {
                      break
                    }
                    o[l >> 2] = y;
                    Wt(e, 18, C) | 0
                  }
                } while (0);
                if ((o[Z >> 2] | 0) == 0) {
                  break
                }
                x = c;
                Wt(e, 19, x) | 0;
                x = (o[c >> 2] | 0) - (o[Z >> 2] | 0) | 0;
                C = e + 180 | 0;
                u[C >> 2] = +u[C >> 2] + +(x | 0);
                C = e + 184 | 0;
                u[C >> 2] = +u[C >> 2] * .95 + +(x | 0) * .05;
                x = e + 188 | 0;
                u[x >> 2] = +u[x >> 2] + 1.0
              }
            } while (0);
            if ((Y | 0) == 866) {
              u[e + 152 >> 2] = -1.0
            }
            if ((o[e + 204 >> 2] | 0) != 0) {
              kr(t, 0, 1);
              kr(t, o[K >> 2] | 0, 4)
            }
            c = o[(o[v >> 2] | 0) + (o[K >> 2] << 2) >> 2] | 0;
            if ((c | 0) == 0) {
              l = o[T >> 2] | 0;
              if ((l | 0) > 0) {
                s = e + 88 | 0;
                de = 0;
                while (1) {
                  u[(o[s >> 2] | 0) + (de << 2) >> 2] = 1.0000000036274937e-15;
                  u[(o[I >> 2] | 0) + (de << 2) >> 2] = 1.0000000036274937e-15;
                  he = de + 1 | 0;
                  fe = o[T >> 2] | 0;
                  if ((he | 0) < (fe | 0)) {
                    de = he
                  } else {
                    pe = fe;
                    break
                  }
                }
              } else {
                pe = l
              }
              if ((o[h >> 2] | 0) > 0) {
                l = e + 112 | 0;
                de = 0;
                do {
                  u[(o[l >> 2] | 0) + (de << 2) >> 2] = 0.0;
                  de = de + 1 | 0
                } while ((de | 0) < (o[h >> 2] | 0));
                me = o[T >> 2] | 0
              } else {
                me = pe
              }
              o[m >> 2] = 1;
              o[e + 40 >> 2] = 1;
              pe = o[Q >> 2] | 0;
              de = o[p >> 2] | 0;
              l = d + ((me << 1) - de << 2) | 0;
              s = de - me << 2;
              Gn(pe | 0, l | 0, s) | 0;
              if ((o[h >> 2] | 0) <= 0) {
                we = 0;
                f = n;
                return we | 0
              }
              s = e + 108 | 0;
              l = 0;
              while (1) {
                u[(o[s >> 2] | 0) + (l << 2) >> 2] = 0.0;
                pe = l + 1 | 0;
                if ((pe | 0) < (o[h >> 2] | 0)) {
                  l = pe
                } else {
                  we = 0;
                  break
                }
              }
              f = n;
              return we | 0
            }
            l = o[h >> 2] | 0;
            if ((o[m >> 2] | 0) != 0 & (l | 0) > 0) {
              s = e + 100 | 0;
              pe = 0;
              do {
                u[(o[s >> 2] | 0) + (pe << 2) >> 2] = +u[S + (pe << 2) >> 2];
                pe = pe + 1 | 0;
                be = o[h >> 2] | 0
              } while ((pe | 0) < (be | 0));
              Ee = o[(o[v >> 2] | 0) + (o[K >> 2] << 2) >> 2] | 0;
              Se = be
            } else {
              Ee = c;
              Se = l
            }
            Ci[o[Ee + 16 >> 2] & 7](S, k, Se, t);
            Se = o[(o[v >> 2] | 0) + (o[K >> 2] << 2) >> 2] | 0;
            if ((o[Se >> 2] | 0) == -1) {
              ve = Se
            } else {
              kr(t, W - (o[e + 28 >> 2] | 0) | 0, 7);
              ve = o[(o[v >> 2] | 0) + (o[K >> 2] << 2) >> 2] | 0
            }
            if ((o[ve + 4 >> 2] | 0) == 0) {
              ke = G
            } else {
              ve = ~~ + H(G * .9 * 15.0 + .5);
              Se = (ve | 0) > 15 ? 15 : ve;
              ve = (Se | 0) < 0 ? 0 : Se;
              kr(t, ve, 4);
              ke = +(ve | 0) * .066667
            }
            ve = ~~ + H(+ $(te) * 3.5 + .5);
            Se = (ve | 0) < 0 ? 0 : ve;
            ve = (Se | 0) > 31 ? 31 : Se;
            te = +J(+ (ve | 0) / 3.5);
            kr(t, ve, 5);
            ve = o[h >> 2] | 0;
            if ((o[m >> 2] | 0) != 0 & (ve | 0) > 0) {
              Se = e + 104 | 0;
              Ee = 0;
              while (1) {
                u[(o[Se >> 2] | 0) + (Ee << 2) >> 2] = +u[k + (Ee << 2) >> 2];
                l = Ee + 1 | 0;
                c = o[h >> 2] | 0;
                if ((l | 0) < (c | 0)) {
                  Ee = l
                } else {
                  ge = c;
                  break
                }
              }
            } else {
              ge = ve
            }
            ve = e + 12 | 0;
            Ee = o[ve >> 2] | 0;
            Se = f;
            f = f + (Ee * 4 | 0) | 0;
            f = f + 7 & -8;
            c = f;
            f = f + (Ee * 4 | 0) | 0;
            f = f + 7 & -8;
            l = f;
            f = f + (Ee * 4 | 0) | 0;
            f = f + 7 & -8;
            be = f;
            f = f + (Ee * 4 | 0) | 0;
            f = f + 7 & -8;
            pe = f;
            f = f + (Ee * 4 | 0) | 0;
            f = f + 7 & -8;
            s = f;
            f = f + (Ee * 4 | 0) | 0;
            f = f + 7 & -8;
            me = f;
            f = f + (ge * 4 | 0) | 0;
            f = f + 7 & -8;
            de = e + 16 | 0;
            fe = o[de >> 2] | 0;
            e: do {
              if ((fe | 0) > 0) {
                he = e + 88 | 0;
                se = e + 100 | 0;
                ee = e + 104 | 0;
                x = e + 136 | 0;
                C = e + 56 | 0;
                y = e + 60 | 0;
                r = e + 124 | 0;
                P = e + 192 | 0;
                R = e + 112 | 0;
                i = e + 28 | 0;
                a = e + 40 | 0;
                N = e + 200 | 0;
                U = e + 36 | 0;
                D = e + 52 | 0;
                z = c;
                B = e + 140 | 0;
                L = e + 108 | 0;
                q = W;
                ye = 0;
                Me = fe;
                Fe = Ee;
                Ae = ge;
                while (1) {
                  Te = re(Fe, ye) | 0;
                  Oe = o[I >> 2] | 0;
                  Re = Oe + (Te << 2) | 0;
                  Ce = o[he >> 2] | 0;
                  Ne = Ce + (Te << 2) | 0;
                  it(o[se >> 2] | 0, S, g, Ae, ye, Me);
                  it(o[ee >> 2] | 0, k, M, o[h >> 2] | 0, ye, o[de >> 2] | 0);
                  nt(g, o[h >> 2] | 0, .0020000000949949026);
                  nt(M, o[h >> 2] | 0, .0020000000949949026);
                  tt(g, F, o[h >> 2] | 0, _);
                  tt(M, A, o[h >> 2] | 0, _);
                  Pe = o[h >> 2] | 0;
                  if ((Pe | 0) > 0) {
                    G = 1.0;
                    xe = 0;
                    while (1) {
                      ne = G + (+ u[A + ((xe | 1) << 2) >> 2] - +u[A + (xe << 2) >> 2]);
                      De = xe + 2 | 0;
                      if ((De | 0) < (Pe | 0)) {
                        G = ne;
                        xe = De
                      } else {
                        Ie = ne;
                        break
                      }
                    }
                  } else {
                    Ie = 1.0
                  }
                  u[(o[x >> 2] | 0) + (ye << 2) >> 2] = Ie;
                  Ir(+ u[C >> 2], F, w, o[h >> 2] | 0);
                  G = +u[y >> 2];
                  xe = o[h >> 2] | 0;
                  do {
                    if (G < 0.0) {
                      if ((xe | 0) <= 0) {
                        break
                      }
                      Jn(E | 0, 0, ((xe | 0) > 1 ? xe << 2 : 4) | 0)
                    } else {
                      Ir(G, F, b, xe)
                    }
                  } while (0);
                  xe = (o[p >> 2] | 0) - (o[T >> 2] | 0) | 0;
                  if ((xe | 0) != (o[ve >> 2] | 0)) {
                    Y = 900;
                    break
                  }
                  Pe = (xe | 0) > 0;
                  do {
                    if ((ye | 0) == 0) {
                      if (Pe) {
                        Le = 0
                      } else {
                        Ue = xe;
                        break
                      }
                      while (1) {
                        G = +u[(o[Q >> 2] | 0) + (Le << 2) >> 2];
                        u[Ce + (Le + Te << 2) >> 2] = G;
                        u[s + (Le << 2) >> 2] = G;
                        De = Le + 1 | 0;
                        qe = o[ve >> 2] | 0;
                        if ((De | 0) < (qe | 0)) {
                          Le = De
                        } else {
                          Ue = qe;
                          break
                        }
                      }
                    } else {
                      if (!Pe) {
                        Ue = xe;
                        break
                      }
                      qe = ye - 1 | 0;
                      De = 0;
                      He = xe;
                      while (1) {
                        G = +u[d + ((re(He, qe) | 0) + De << 2) >> 2];
                        u[Ce + (De + Te << 2) >> 2] = G;
                        u[s + (De << 2) >> 2] = G;
                        Ve = De + 1 | 0;
                        je = o[ve >> 2] | 0;
                        if ((Ve | 0) < (je | 0)) {
                          De = Ve;
                          He = je
                        } else {
                          Ue = je;
                          break
                        }
                      }
                    }
                  } while (0);
                  Xr(s, A, s, Ue, o[h >> 2] | 0, o[r >> 2] | 0, _);
                  xe = Fe >> ((o[P >> 2] | 0) == 0);
                  Wr(A, w, b, pe, xe, o[h >> 2] | 0, _);
                  Pe = o[ve >> 2] | 0;
                  if ((xe | 0) < (Pe | 0)) {
                    He = xe;
                    do {
                      u[pe + (He << 2) >> 2] = 1.0000000036274937e-15;
                      He = He + 1 | 0
                    } while ((He | 0) < (Pe | 0))
                  }
                  He = o[h >> 2] | 0;
                  if ((He | 0) > 0) {
                    xe = o[L >> 2] | 0;
                    De = 0;
                    do {
                      u[me + (De << 2) >> 2] = +u[xe + (De << 2) >> 2];
                      De = De + 1 | 0
                    } while ((De | 0) < (He | 0))
                  }
                  if ((Pe | 0) > 0) {
                    De = 0;
                    do {
                      u[be + (De << 2) >> 2] = 1.0000000036274937e-15;
                      De = De + 1 | 0
                    } while ((De | 0) < (Pe | 0))
                  }
                  jr(be, A, be, Pe, He, me, _);
                  De = o[h >> 2] | 0;
                  if ((De | 0) > 0) {
                    xe = o[R >> 2] | 0;
                    qe = 0;
                    do {
                      u[me + (qe << 2) >> 2] = +u[xe + (qe << 2) >> 2];
                      qe = qe + 1 | 0
                    } while ((qe | 0) < (De | 0))
                  }
                  Vr(be, w, b, be, o[ve >> 2] | 0, De, me, _);
                  qe = o[h >> 2] | 0;
                  if ((qe | 0) > 0) {
                    xe = o[R >> 2] | 0;
                    He = 0;
                    do {
                      u[me + (He << 2) >> 2] = +u[xe + (He << 2) >> 2];
                      He = He + 1 | 0
                    } while ((He | 0) < (qe | 0))
                  }
                  Vr(Ne, w, b, Ne, o[ve >> 2] | 0, qe, me, _);
                  do {
                    if ((o[P >> 2] | 0) == 0) {
                      if ((o[h >> 2] | 0) > 0) {
                        Xe = 0
                      } else {
                        break
                      }
                      do {
                        u[(o[R >> 2] | 0) + (Xe << 2) >> 2] = +u[me + (Xe << 2) >> 2];
                        Xe = Xe + 1 | 0
                      } while ((Xe | 0) < (o[h >> 2] | 0))
                    }
                  } while (0);
                  qe = o[ve >> 2] | 0;
                  if ((qe | 0) > 0) {
                    He = 0;
                    do {
                      u[Se + (He << 2) >> 2] = +u[Ce + (He + Te << 2) >> 2] - +u[be + (He << 2) >> 2];
                      He = He + 1 | 0
                    } while ((He | 0) < (qe | 0))
                  }
                  Jn(Re | 0, 0, qe << 2 | 0);
                  He = o[(o[v >> 2] | 0) + (o[K >> 2] << 2) >> 2] | 0;
                  Ce = o[He + 24 >> 2] | 0;
                  if ((Ce | 0) == 0) {
                    Y = 926;
                    break
                  }
                  xe = o[He >> 2] | 0;
                  if ((xe | 0) == (- 1 | 0)) {
                    Ke = o[O >> 2] | 0;
                    Ye = o[i >> 2] | 0;
                    We = q
                  } else if ((xe | 0) == 0) {
                    Ke = q;
                    Ye = q;
                    We = q
                  } else {
                    De = xe - 1 + (o[i >> 2] | 0) | 0;
                    Pe = (q | 0) < (De | 0) ? De : q;
                    De = (o[O >> 2] | 0) - xe | 0;
                    je = (Pe | 0) > (De | 0) ? De : Pe;
                    Ke = je + xe | 0;
                    Ye = 1 - xe + je | 0;
                    We = je
                  }
                  je = Ti[Ce & 7](Se, Ne, A, w, b, l, o[He + 32 >> 2] | 0, Ye, (o[a >> 2] | 0) != 0 & (Ke | 0) > (Te | 0) ? Te : Ke, ke, o[h >> 2] | 0, o[ve >> 2] | 0, t, _, Re, pe, o[P >> 2] | 0, 0, o[N >> 2] | 0, U) | 0;
                  o[(o[D >> 2] | 0) + (ye << 2) >> 2] = je;
                  je = o[ve >> 2] | 0;
                  Jn(z | 0, 0, je << 2 | 0);
                  if ((je | 0) > 0) {
                    He = 0;
                    do {
                      Ce = s + (He << 2) | 0;
                      u[Ce >> 2] = +u[Ce >> 2] - +u[l + (He << 2) >> 2];
                      He = He + 1 | 0
                    } while ((He | 0) < (je | 0))
                  }
                  G = +zr(s, je) / te;
                  He = o[(o[(o[v >> 2] | 0) + (o[K >> 2] << 2) >> 2] | 0) + 8 >> 2] | 0;
                  if ((He | 0) == 3) {
                    qe = Mn(G, 6864, 8) | 0;
                    kr(t, qe, 3);
                    Ge = te * +u[6896 + (qe << 2) >> 2]
                  } else if ((He | 0) == 0) {
                    Ge = te
                  } else {
                    He = Mn(G, 6928, 2) | 0;
                    kr(t, He, 1);
                    Ge = te * +u[6936 + (He << 2) >> 2]
                  }
                  qr(Se, Se, Ge, o[ve >> 2] | 0);
                  He = o[(o[v >> 2] | 0) + (o[K >> 2] << 2) >> 2] | 0;
                  qe = o[He + 36 >> 2] | 0;
                  if ((qe | 0) == 0) {
                    Y = 936;
                    break
                  }
                  vi[qe & 7](Se, A, w, b, o[He + 44 >> 2] | 0, o[h >> 2] | 0, o[ve >> 2] | 0, c, pe, t, _, o[P >> 2] | 0, o[He + 12 >> 2] | 0);
                  Ur(c, c, Ge, o[ve >> 2] | 0);
                  He = o[ve >> 2] | 0;
                  if ((He | 0) > 0) {
                    qe = 0;
                    while (1) {
                      u[Oe + (qe + Te << 2) >> 2] = +u[l + (qe << 2) >> 2] + +u[c + (qe << 2) >> 2];
                      Ce = qe + 1 | 0;
                      xe = o[ve >> 2] | 0;
                      if ((Ce | 0) < (xe | 0)) {
                        qe = Ce
                      } else {
                        Qe = xe;
                        break
                      }
                    }
                  } else {
                    Qe = He
                  }
                  if ((o[(o[(o[v >> 2] | 0) + (o[K >> 2] << 2) >> 2] | 0) + 12 >> 2] | 0) == 0) {
                    Ze = Qe
                  } else {
                    qe = ze() | 0;
                    je = f;
                    f = f + (Qe * 4 | 0) | 0;
                    f = f + 7 & -8;
                    xe = o[ve >> 2] | 0;
                    Jn(je | 0, 0, xe << 2 | 0);
                    if ((xe | 0) > 0) {
                      Ce = 0;
                      do {
                        Pe = Se + (Ce << 2) | 0;
                        u[Pe >> 2] = +u[Pe >> 2] * 2.200000047683716;
                        Ce = Ce + 1 | 0
                      } while ((Ce | 0) < (xe | 0))
                    }
                    Ce = o[(o[v >> 2] | 0) + (o[K >> 2] << 2) >> 2] | 0;
                    vi[o[Ce + 36 >> 2] & 7](Se, A, w, b, o[Ce + 44 >> 2] | 0, o[h >> 2] | 0, xe, je, pe, t, _, o[P >> 2] | 0, 0);
                    Ur(je, je, Ge * .4545449912548065, o[ve >> 2] | 0);
                    Ce = o[ve >> 2] | 0;
                    if ((Ce | 0) > 0) {
                      He = 0;
                      do {
                        Pe = c + (He << 2) | 0;
                        u[Pe >> 2] = +u[Pe >> 2] + +u[je + (He << 2) >> 2];
                        He = He + 1 | 0
                      } while ((He | 0) < (Ce | 0))
                    }
                    Be(qe | 0);
                    Ze = o[ve >> 2] | 0
                  }
                  if ((Ze | 0) > 0) {
                    Ce = 0;
                    while (1) {
                      u[Oe + (Ce + Te << 2) >> 2] = +u[l + (Ce << 2) >> 2] + +u[c + (Ce << 2) >> 2];
                      He = Ce + 1 | 0;
                      je = o[ve >> 2] | 0;
                      if ((He | 0) < (je | 0)) {
                        Ce = He
                      } else {
                        Je = je;
                        break
                      }
                    }
                  } else {
                    Je = Ze
                  }
                  if ((o[B >> 2] | 0) == 0) {
                    $e = Je
                  } else {
                    G = +Hr(c, Je);
                    u[(o[B >> 2] | 0) + (ye << 2) >> 2] = G;
                    $e = o[ve >> 2] | 0
                  }
                  jr(Re, A, Ne, $e, o[h >> 2] | 0, o[L >> 2] | 0, _);
                  if ((o[P >> 2] | 0) != 0) {
                    Vr(Ne, w, b, Ne, o[ve >> 2] | 0, o[h >> 2] | 0, o[R >> 2] | 0, _)
                  }
                  Ce = ye + 1 | 0;
                  Te = o[de >> 2] | 0;
                  if ((Ce | 0) >= (Te | 0)) {
                    break e
                  }
                  q = We;
                  ye = Ce;
                  Me = Te;
                  Fe = o[ve >> 2] | 0;
                  Ae = o[h >> 2] | 0
                }
                if ((Y | 0) == 900) {
                  Et(13800, 708);
                  return 0
                } else if ((Y | 0) == 926) {
                  Et(13568, 760);
                  return 0
                } else if ((Y | 0) == 936) {
                  Et(13376, 842);
                  return 0
                }
              }
            } while (0);
            do {
              if ((o[K >> 2] | 0) > 0) {
                do {
                  if ((o[h >> 2] | 0) > 0) {
                    Y = e + 100 | 0;
                    ve = 0;
                    do {
                      u[(o[Y >> 2] | 0) + (ve << 2) >> 2] = +u[S + (ve << 2) >> 2];
                      ve = ve + 1 | 0;
                      er = o[h >> 2] | 0
                    } while ((ve | 0) < (er | 0));
                    if ((er | 0) <= 0) {
                      break
                    }
                    ve = e + 104 | 0;
                    Y = 0;
                    do {
                      u[(o[ve >> 2] | 0) + (Y << 2) >> 2] = +u[k + (Y << 2) >> 2];
                      Y = Y + 1 | 0
                    } while ((Y | 0) < (o[h >> 2] | 0))
                  }
                } while (0);
                if ((o[K >> 2] | 0) != 1) {
                  break
                }
                if ((o[e + 172 >> 2] | 0) == 0) {
                  kr(t, 0, 4);
                  break
                } else {
                  kr(t, 15, 4);
                  break
                }
              }
            } while (0);
            o[m >> 2] = 0;
            m = o[Q >> 2] | 0;
            Q = o[T >> 2] | 0;
            T = o[p >> 2] | 0;
            p = d + ((Q << 1) - T << 2) | 0;
            d = T - Q << 2;
            Gn(m | 0, p | 0, d) | 0;
            d = o[K >> 2] | 0;
            K = e + 40 | 0;
            if ((o[(o[(o[v >> 2] | 0) + (d << 2) >> 2] | 0) + 36 >> 2] | 0) == 4 | (d | 0) == 0) {
              o[K >> 2] = 1;
              we = 1;
              f = n;
              return we | 0
            } else {
              o[K >> 2] = 0;
              we = 1;
              f = n;
              return we | 0
            }
            return 0
          }
          function Et(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0;
            ve(o[p >> 2] | 0, 13984, (t = f, f = f + 24 | 0, o[t >> 2] = 13904, o[t + 8 >> 2] = r, o[t + 16 >> 2] = e, t) | 0) | 0;
            f = t;
            xe(1)
          }
          function St(e) {
            e = e | 0;
            var r = 0,
              t = 0,
              n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              f = 0;
            r = o[e >> 2] | 0;
            t = Cn(508, 1) | 0;
            if ((t | 0) == 0) {
              n = 0;
              return n | 0
            }
            o[t + 44 >> 2] = 0;
            o[t >> 2] = e;
            o[t + 124 >> 2] = 1;
            o[t + 4 >> 2] = 1;
            e = r;
            i = o[e >> 2] | 0;
            o[t + 12 >> 2] = i;
            a = r + 4 | 0;
            s = (o[e >> 2] | 0) / (o[a >> 2] | 0) | 0;
            o[t + 20 >> 2] = s;
            e = o[a >> 2] | 0;
            o[t + 16 >> 2] = e;
            a = o[r + 8 >> 2] | 0;
            o[t + 24 >> 2] = a;
            o[t + 28 >> 2] = o[r + 12 >> 2];
            l = o[r + 16 >> 2] | 0;
            o[t + 32 >> 2] = l;
            o[t + 128 >> 2] = r + 32;
            o[t + 132 >> 2] = o[r + 96 >> 2];
            o[t + 136 >> 2] = 1;
            r = l << 1;
            c = Cn((r + i + e << 2) + 48 | 0, 1) | 0;
            f = c;
            o[t + 48 >> 2] = f;
            o[t + 52 >> 2] = f + (e + 6 + r << 2);
            Jn(c | 0, 0, l + i << 2 | 0);
            i = a << 2;
            o[t + 60 >> 2] = Cn(i, 1) | 0;
            o[t + 56 >> 2] = Cn(i, 1) | 0;
            o[t + 64 >> 2] = Cn(i, 1) | 0;
            o[t + 76 >> 2] = Cn(s << 2, 1) | 0;
            o[t + 96 >> 2] = 40;
            o[t + 8 >> 2] = 0;
            Jn(t + 104 | 0, 0, 16);
            o[t + 120 >> 2] = 1e3;
            o[t + 36 >> 2] = 8e3;
            u[t + 40 >> 2] = 0.0;
            o[t + 464 >> 2] = 22;
            o[t + 468 >> 2] = 0;
            o[t + 144 >> 2] = 0;
            o[t + 164 >> 2] = 0;
            o[t + 184 >> 2] = 0;
            o[t + 204 >> 2] = 0;
            o[t + 224 >> 2] = 0;
            o[t + 244 >> 2] = 0;
            o[t + 264 >> 2] = 0;
            o[t + 284 >> 2] = 0;
            o[t + 304 >> 2] = 0;
            o[t + 324 >> 2] = 0;
            o[t + 344 >> 2] = 0;
            o[t + 364 >> 2] = 0;
            o[t + 384 >> 2] = 0;
            o[t + 404 >> 2] = 0;
            o[t + 424 >> 2] = 0;
            o[t + 444 >> 2] = 0;
            Jn(t + 480 | 0, 0, 24);
            o[t + 504 >> 2] = 1;
            n = t;
            return n | 0
          }
          function vt(e) {
            e = e | 0;
            Rn(o[e + 48 >> 2] | 0);
            Rn(o[e + 60 >> 2] | 0);
            Rn(o[e + 56 >> 2] | 0);
            Rn(o[e + 64 >> 2] | 0);
            Rn(o[e + 76 >> 2] | 0);
            Rn(e);
            return
          }
          function kt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              d = 0,
              h = 0,
              m = 0,
              w = 0.0,
              b = 0.0,
              E = 0.0,
              S = 0.0,
              v = 0.0,
              k = 0.0,
              g = 0,
              y = 0,
              M = 0,
              F = 0,
              A = 0,
              T = 0,
              O = 0,
              R = 0,
              C = 0.0,
              N = 0,
              P = 0,
              x = 0,
              D = 0,
              I = 0,
              L = 0,
              B = 0.0,
              U = 0,
              q = 0,
              H = 0.0,
              z = 0,
              j = 0,
              X = 0,
              K = 0,
              Y = 0,
              W = 0,
              G = 0,
              Q = 0,
              Z = 0,
              $ = 0,
              ee = 0,
              te = 0,
              ne = 0,
              ie = 0,
              oe = 0,
              ae = 0,
              se = 0,
              le = 0,
              ue = 0,
              ce = 0,
              fe = 0,
              de = 0,
              _e = 0,
              he = 0,
              pe = 0,
              me = 0,
              we = 0.0,
              be = 0.0,
              Ee = 0.0,
              Se = 0.0,
              ke = 0.0,
              ge = 0,
              ye = 0.0,
              Me = 0,
              Fe = 0,
              Ae = 0.0,
              Te = 0.0,
              Oe = 0,
              Re = 0,
              Ce = 0,
              Ne = 0,
              Pe = 0,
              xe = 0,
              De = 0,
              Ie = 0,
              Le = 0.0,
              Ue = 0,
              qe = 0,
              He = 0.0,
              Ve = 0;
            n = f;
            f = f + 24 | 0;
            i = n | 0;
            a = n + 8 | 0;
            s = t;
            l = e;
            c = o[e + 44 >> 2] | 0;
            do {
              if ((r | 0) == 0) {
                if ((o[e + 496 >> 2] | 0) != 0) {
                  d = e + 132 | 0;
                  o[d >> 2] = 0;
                  h = d;
                  break
                }
                d = e + 8 | 0;
                m = o[d >> 2] | 0;
                if ((m | 0) < 10) {
                  w = +u[12640 + (m << 2) >> 2]
                } else {
                  w = 0.0
                }
                b = +u[e + 104 >> 2];
                E = +u[e + 108 >> 2];
                S = +u[e + 112 >> 2];
                do {
                  if (b < E) {
                    if (E < S) {
                      v = E;
                      break
                    }
                    v = b < S ? S : b
                  } else {
                    if (S < E) {
                      v = E;
                      break
                    }
                    v = S < b ? S : b
                  }
                } while (0);
                m = e + 100 | 0;
                b = +u[m >> 2];
                if (v < b) {
                  u[m >> 2] = v;
                  k = v
                } else {
                  k = b
                }
                b = w * (k > .85 ? .8500000238418579 : k) + 1.0000000036274937e-15;
                m = e + 52 | 0;
                g = e + 12 | 0;
                S = +zr(o[m >> 2] | 0, o[g >> 2] | 0);
                y = o[e + 48 >> 2] | 0;
                M = e + 32 | 0;
                F = e + 16 | 0;
                Qn(y | 0, y + (o[g >> 2] << 2) | 0, ((o[M >> 2] << 1) + (o[F >> 2] | 0) << 2) + 48 | 0);
                y = o[e + 96 >> 2] | 0;
                E = +((o[d >> 2] | 0) + 1 | 0);
                A = e + 120 | 0;
                T = (re(o[A >> 2] | 0, 1664525) | 0) + 1013904223 | 0;
                o[A >> 2] = T;
                O = ~~(E * 3.4642 * ((o[_ >> 2] = T & 8388607 | 1065353216, +u[_ >> 2]) + -1.5)) + y | 0;
                y = o[M >> 2] | 0;
                M = (O | 0) > (y | 0) ? y : O;
                O = o[e + 28 >> 2] | 0;
                y = (M | 0) < (O | 0) ? O : M;
                e: do {
                  if ((o[g >> 2] | 0) > 0) {
                    E = S * w * (1.0 - b * b) * 3.4642;
                    M = 0;
                    O = T;
                    while (1) {
                      R = o[m >> 2] | 0;
                      C = b * (+ u[R + (M - y << 2) >> 2] + 1.0000000036274937e-15);
                      N = (re(O, 1664525) | 0) + 1013904223 | 0;
                      o[A >> 2] = N;
                      u[R + (M << 2) >> 2] = C + E * ((o[_ >> 2] = N & 8388607 | 1065353216, +u[_ >> 2]) + -1.5);
                      N = M + 1 | 0;
                      if ((N | 0) >= (o[g >> 2] | 0)) {
                        break e
                      }
                      M = N;
                      O = o[A >> 2] | 0
                    }
                  }
                } while (0);
                A = e + 60 | 0;
                y = o[A >> 2] | 0;
                T = e + 24 | 0;
                Ir(.9800000190734863, y, y, o[T >> 2] | 0);
                jr((o[m >> 2] | 0) + (- (o[F >> 2] | 0) << 2) | 0, o[A >> 2] | 0, s, o[g >> 2] | 0, o[T >> 2] | 0, o[e + 64 >> 2] | 0, c);
                Br(s, s, o[g >> 2] | 0, 1, e + 68 | 0);
                o[e + 4 >> 2] = 0;
                o[d >> 2] = (o[d >> 2] | 0) + 1;
                T = e + 116 | 0;
                A = o[T >> 2] | 0;
                o[T >> 2] = A + 1;
                u[l + 104 + (A << 2) >> 2] = b;
                if ((o[T >> 2] | 0) <= 2) {
                  P = 0;
                  f = n;
                  return P | 0
                }
                o[T >> 2] = 0;
                P = 0;
                f = n;
                return P | 0
              } else {
                if ((o[e + 124 >> 2] | 0) == 0) {
                  h = e + 132 | 0;
                  break
                }
                if ((Tr(r) | 0) < 5) {
                  P = -1;
                  f = n;
                  return P | 0
                }
                T = e + 140 | 0;
                A = e + 464 | 0;
                y = e + 468 | 0;
                e: while (1) {
                  do {
                    if ((yr(r, 1) | 0) != 0) {
                      Ar(r, (o[232 + ((yr(r, 3) | 0) << 2) >> 2] | 0) - 4 | 0);
                      if ((Tr(r) | 0) < 5) {
                        P = -1;
                        x = 1124;
                        break e
                      }
                      if ((yr(r, 1) | 0) == 0) {
                        break
                      }
                      Ar(r, (o[232 + ((yr(r, 3) | 0) << 2) >> 2] | 0) - 4 | 0);
                      if ((yr(r, 1) | 0) != 0) {
                        x = 1005;
                        break e
                      }
                    }
                  } while (0);
                  if ((Tr(r) | 0) < 4) {
                    P = -1;
                    x = 1129;
                    break
                  }
                  D = yr(r, 4) | 0;
                  if ((D | 0) == 14) {
                    O = en(r, T, e) | 0;
                    if ((O | 0) != 0) {
                      P = O;
                      x = 1121;
                      break
                    }
                  } else if ((D | 0) == 13) {
                    O = Mi[o[A >> 2] & 31](r, e, o[y >> 2] | 0) | 0;
                    if ((O | 0) != 0) {
                      P = O;
                      x = 1125;
                      break
                    }
                  } else if ((D | 0) == 15) {
                    P = -1;
                    x = 1130;
                    break
                  } else {
                    x = 1011;
                    break
                  }
                  if ((Tr(r) | 0) < 5) {
                    P = -1;
                    x = 1122;
                    break
                  }
                }
                if ((x | 0) == 1005) {
                  y = o[p >> 2] | 0;
                  ve(y | 0, 14032, (I = f, f = f + 8 | 0, o[I >> 2] = 13040, I) | 0) | 0;
                  f = I;
                  P = -2;
                  f = n;
                  return P | 0
                } else if ((x | 0) == 1011) {
                  if ((D | 0) <= 8) {
                    y = e + 132 | 0;
                    o[y >> 2] = D;
                    h = y;
                    break
                  }
                  ve(o[p >> 2] | 0, 14032, (I = f, f = f + 8 | 0, o[I >> 2] = 13208, I) | 0) | 0;
                  f = I;
                  P = -2;
                  f = n;
                  return P | 0
                } else if ((x | 0) == 1121) {
                  f = n;
                  return P | 0
                } else if ((x | 0) == 1122) {
                  f = n;
                  return P | 0
                } else if ((x | 0) == 1124) {
                  f = n;
                  return P | 0
                } else if ((x | 0) == 1125) {
                  f = n;
                  return P | 0
                } else if ((x | 0) == 1129) {
                  f = n;
                  return P | 0
                } else if ((x | 0) == 1130) {
                  f = n;
                  return P | 0
                }
              }
            } while (0);
            I = o[e + 48 >> 2] | 0;
            D = e + 12 | 0;
            l = e + 32 | 0;
            y = e + 16 | 0;
            Qn(I | 0, I + (o[D >> 2] << 2) | 0, ((o[l >> 2] << 1) + (o[y >> 2] | 0) << 2) + 48 | 0);
            I = e + 128 | 0;
            A = (o[(o[I >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0) == 0;
            T = e + 24 | 0;
            d = o[T >> 2] | 0;
            g = ze() | 0;
            F = f;
            f = f + (d * 4 | 0) | 0;
            f = f + 7 & -8;
            if (A) {
              Ir(.9300000071525574, o[e + 60 >> 2] | 0, F, o[T >> 2] | 0);
              A = e + 52 | 0;
              w = +zr(o[A >> 2] | 0, o[D >> 2] | 0);
              d = o[D >> 2] | 0;
              if ((d | 0) > 0) {
                m = e + 120 | 0;
                k = w * 3.4642;
                O = 0;
                while (1) {
                  M = (re(o[m >> 2] | 0, 1664525) | 0) + 1013904223 | 0;
                  o[m >> 2] = M;
                  u[(o[A >> 2] | 0) + (O << 2) >> 2] = k * ((o[_ >> 2] = M & 8388607 | 1065353216, +u[_ >> 2]) + -1.5);
                  M = O + 1 | 0;
                  N = o[D >> 2] | 0;
                  if ((M | 0) < (N | 0)) {
                    O = M
                  } else {
                    L = N;
                    break
                  }
                }
              } else {
                L = d
              }
              o[e + 4 >> 2] = 1;
              jr(o[A >> 2] | 0, F, s, L, o[T >> 2] | 0, o[e + 64 >> 2] | 0, c);
              o[e + 8 >> 2] = 0;
              Be(g | 0);
              P = 0;
              f = n;
              return P | 0
            }
            Ai[o[(o[(o[I >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0) + 20 >> 2] & 7](F, o[T >> 2] | 0, r);
            L = e + 8 | 0;
            do {
              if ((o[L >> 2] | 0) != 0) {
                A = o[T >> 2] | 0;
                d = (A | 0) > 0;
                if (!d) {
                  break
                }
                O = o[e + 56 >> 2] | 0;
                k = 0.0;
                m = 0;
                do {
                  w = +u[O + (m << 2) >> 2] - +u[F + (m << 2) >> 2];
                  if (w < 0.0) {
                    B = -0.0 - w
                  } else {
                    B = w
                  }
                  k = k + B;
                  m = m + 1 | 0
                } while ((m | 0) < (A | 0));
                w = +J(k * -.2) * .6;
                if (!d) {
                  break
                }
                A = e + 64 | 0;
                m = 0;
                do {
                  O = (o[A >> 2] | 0) + (m << 2) | 0;
                  u[O >> 2] = w * +u[O >> 2];
                  m = m + 1 | 0
                } while ((m | 0) < (o[T >> 2] | 0))
              }
            } while (0);
            m = e + 4 | 0;
            if ((o[m >> 2] | 0) == 0) {
              if ((o[L >> 2] | 0) != 0) {
                x = 1030
              }
            } else {
              x = 1030
            }
            do {
              if ((x | 0) == 1030) {
                if ((o[T >> 2] | 0) <= 0) {
                  break
                }
                A = e + 56 | 0;
                d = 0;
                do {
                  u[(o[A >> 2] | 0) + (d << 2) >> 2] = +u[F + (d << 2) >> 2];
                  d = d + 1 | 0
                } while ((d | 0) < (o[T >> 2] | 0))
              }
            } while (0);
            d = o[(o[I >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0;
            if ((o[d >> 2] | 0) == -1) {
              U = 0;
              q = d
            } else {
              d = o[e + 28 >> 2] | 0;
              A = (yr(r, 7) | 0) + d | 0;
              U = A;
              q = o[(o[I >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0
            }
            if ((o[q + 4 >> 2] | 0) == 0) {
              H = 0.0
            } else {
              H = +(yr(r, 4) | 0) * .066667
            }
            B = +J(+ (yr(r, 5) | 0) / 3.5);
            q = f;
            f = f + ((o[T >> 2] | 0) * 4 | 0) | 0;
            f = f + 7 & -8;
            A = o[y >> 2] | 0;
            d = f;
            f = f + (A * 4 | 0) | 0;
            f = f + 7 & -8;
            O = f;
            f = f + (A * 4 | 0) | 0;
            f = f + 7 & -8;
            A = o[h >> 2] | 0;
            if ((A | 0) == 1) {
              o[e + 496 >> 2] = (yr(r, 4) | 0) == 15;
              z = o[h >> 2] | 0
            } else {
              z = A
            }
            if ((z | 0) > 1) {
              o[e + 496 >> 2] = 0
            }
            z = e + 20 | 0;
            do {
              if ((o[z >> 2] | 0) > 0) {
                A = e + 52 | 0;
                N = e + 80 | 0;
                M = e + 28 | 0;
                R = a | 0;
                j = e + 100 | 0;
                X = a + 4 | 0;
                K = a + 8 | 0;
                Y = d;
                W = e + 120 | 0;
                w = (H + -.20000000298023224) * 1.5;
                k = w < 0.0 ? 0.0 : w;
                w = k > 1.0 ? 1.0 : k;
                G = e + 492 | 0;
                Q = e + 480 | 0;
                k = 1.0 - w * .8500000238418579;
                v = w * .15000000596046448;
                Z = e + 484 | 0;
                $ = e + 488 | 0;
                b = +(U << 1 | 0);
                S = B * w;
                w = 0.0;
                E = 0.0;
                ee = 40;
                te = 0;
                ne = o[y >> 2] | 0;
                while (1) {
                  ie = re(ne, te) | 0;
                  oe = o[A >> 2] | 0;
                  ae = oe + (ie << 2) | 0;
                  se = o[N >> 2] | 0;
                  if ((se | 0) == 0) {
                    le = 0
                  } else {
                    le = se + (ie << 2) | 0
                  }
                  se = ae;
                  Jn(se | 0, 0, ne << 2 | 0);
                  ue = o[(o[I >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0;
                  ce = o[ue + 28 >> 2] | 0;
                  if ((ce | 0) == 0) {
                    x = 1046;
                    break
                  }
                  fe = o[ue >> 2] | 0;
                  if ((fe | 0) == (- 1 | 0)) {
                    de = o[l >> 2] | 0;
                    _e = o[M >> 2] | 0
                  } else if ((fe | 0) == 0) {
                    de = U;
                    _e = U
                  } else {
                    he = U - fe + 1 | 0;
                    pe = o[M >> 2] | 0;
                    me = fe + U | 0;
                    fe = o[l >> 2] | 0;
                    de = (me | 0) > (fe | 0) ? fe : me;
                    _e = (he | 0) < (pe | 0) ? pe : he
                  }
                  Oi[ce & 7](ae, O, _e, de, H, o[ue + 32 >> 2] | 0, o[y >> 2] | 0, i, R, r, c, o[L >> 2] | 0, ie, +u[j >> 2], 0);
                  Lr(O, -32.0e3, 32.0e3, o[y >> 2] | 0);
                  C = +u[X >> 2];
                  if (C < 0.0) {
                    we = -0.0 - C
                  } else {
                    we = C
                  }
                  C = +u[R >> 2];
                  be = C;
                  if (C > 0.0) {
                    Ee = be
                  } else {
                    Ee = be * -.5
                  }
                  be = +u[K >> 2];
                  C = be;
                  if (be > 0.0) {
                    Se = C
                  } else {
                    Se = C * -.5
                  }
                  C = we + Ee + Se;
                  ke = w + C;
                  ue = C > E;
                  do {
                    if (ue) {
                      ae = o[i >> 2] | 0;
                      ce = (ee << 1) - ae | 0;
                      if ((((ce | 0) < 0 ? -ce | 0 : ce) | 0) <= 2) {
                        x = 1060;
                        break
                      }
                      ce = (ee * 3 | 0) - ae | 0;
                      if ((((ce | 0) < 0 ? -ce | 0 : ce) | 0) <= 3) {
                        x = 1060;
                        break
                      }
                      ce = (ee << 2) - ae | 0;
                      if ((((ce | 0) < 0 ? -ce | 0 : ce) | 0) > 4) {
                        ge = ae;
                        x = 1069
                      } else {
                        x = 1060
                      }
                    } else {
                      x = 1060
                    }
                  } while (0);
                  e: do {
                    if ((x | 0) == 1060) {
                      x = 0;
                      be = C;
                      ye = E;
                      do {
                        if (be > ye * .6) {
                          ae = o[i >> 2] | 0;
                          ce = ee - (ae << 1) | 0;
                          if ((((ce | 0) < 0 ? -ce | 0 : ce) | 0) < 3) {
                            Me = ae;
                            break
                          }
                          ce = (ae * -3 | 0) + ee | 0;
                          if ((((ce | 0) < 0 ? -ce | 0 : ce) | 0) < 4) {
                            Me = ae;
                            break
                          }
                          ce = ee - (ae << 2) | 0;
                          if ((((ce | 0) < 0 ? -ce | 0 : ce) | 0) < 5) {
                            Me = ae
                          } else {
                            x = 1064
                          }
                        } else {
                          x = 1064
                        }
                      } while (0);
                      do {
                        if ((x | 0) == 1064) {
                          x = 0;
                          if (be * .67 <= ye) {
                            Fe = ee;
                            Ae = E;
                            break e
                          }
                          ae = o[i >> 2] | 0;
                          ce = (ee << 1) - ae | 0;
                          if ((((ce | 0) < 0 ? -ce | 0 : ce) | 0) < 3) {
                            Me = ae;
                            break
                          }
                          ce = (ee * 3 | 0) - ae | 0;
                          if ((((ce | 0) < 0 ? -ce | 0 : ce) | 0) < 4) {
                            Me = ae;
                            break
                          }
                          ce = (ee << 2) - ae | 0;
                          if ((((ce | 0) < 0 ? -ce | 0 : ce) | 0) < 5) {
                            Me = ae
                          } else {
                            Fe = ee;
                            Ae = E;
                            break e
                          }
                        }
                      } while (0);
                      if (ue) {
                        ge = Me;
                        x = 1069
                      } else {
                        Fe = Me;
                        Ae = E
                      }
                    }
                  } while (0);
                  if ((x | 0) == 1069) {
                    x = 0;
                    Fe = ge;
                    Ae = C
                  }
                  Jn(Y | 0, 0, o[y >> 2] << 2 | 0);
                  ue = o[(o[(o[I >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0) + 8 >> 2] | 0;
                  if ((ue | 0) == 3) {
                    Te = B * +u[6896 + ((yr(r, 3) | 0) << 2) >> 2]
                  } else if ((ue | 0) == 1) {
                    Te = B * +u[6936 + ((yr(r, 1) | 0) << 2) >> 2]
                  } else {
                    Te = B
                  }
                  ue = o[(o[I >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0;
                  ae = o[ue + 40 >> 2] | 0;
                  if ((ae | 0) == 0) {
                    x = 1074;
                    break
                  }
                  ki[ae & 7](d, o[ue + 44 >> 2] | 0, o[y >> 2] | 0, r, c, W);
                  Ur(d, d, Te, o[y >> 2] | 0);
                  if ((o[(o[(o[I >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0) + 12 >> 2] | 0) != 0) {
                    ue = o[y >> 2] | 0;
                    ae = ze() | 0;
                    ce = f;
                    f = f + (ue * 4 | 0) | 0;
                    f = f + 7 & -8;
                    ue = o[y >> 2] | 0;
                    Jn(ce | 0, 0, ue << 2 | 0);
                    he = o[(o[I >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0;
                    ki[o[he + 40 >> 2] & 7](ce, o[he + 44 >> 2] | 0, ue, r, c, W);
                    Ur(ce, ce, Te * .4545449912548065, o[y >> 2] | 0);
                    ue = o[y >> 2] | 0;
                    if ((ue | 0) > 0) {
                      he = 0;
                      do {
                        pe = d + (he << 2) | 0;
                        u[pe >> 2] = +u[pe >> 2] + +u[ce + (he << 2) >> 2];
                        he = he + 1 | 0
                      } while ((he | 0) < (ue | 0))
                    }
                    Be(ae | 0)
                  }
                  ue = o[y >> 2] | 0;
                  if ((ue | 0) > 0) {
                    he = 0;
                    while (1) {
                      u[oe + (he + ie << 2) >> 2] = +u[O + (he << 2) >> 2] + +u[d + (he << 2) >> 2];
                      ce = he + 1 | 0;
                      pe = o[y >> 2] | 0;
                      if ((ce | 0) < (pe | 0)) {
                        he = ce
                      } else {
                        Oe = pe;
                        break
                      }
                    }
                  } else {
                    Oe = ue
                  }
                  if ((le | 0) != 0 & (Oe | 0) > 0) {
                    he = 0;
                    while (1) {
                      u[le + (he << 2) >> 2] = +u[d + (he << 2) >> 2];
                      ae = he + 1 | 0;
                      pe = o[y >> 2] | 0;
                      if ((ae | 0) < (pe | 0)) {
                        he = ae
                      } else {
                        Re = pe;
                        break
                      }
                    }
                  } else {
                    Re = Oe
                  }
                  do {
                    if ((o[h >> 2] | 0) == 1) {
                      Jn(se | 0, 0, Re << 2 | 0);
                      he = o[G >> 2] | 0;
                      ue = o[y >> 2] | 0;
                      if ((he | 0) < (ue | 0)) {
                        pe = he;
                        ae = ue;
                        while (1) {
                          if ((pe | 0) > -1) {
                            u[oe + (pe + ie << 2) >> 2] = S * +V(b);
                            Ce = o[G >> 2] | 0;
                            Ne = o[y >> 2] | 0
                          } else {
                            Ce = pe;
                            Ne = ae
                          }
                          ce = Ce + U | 0;
                          o[G >> 2] = ce;
                          if ((ce | 0) < (Ne | 0)) {
                            pe = ce;
                            ae = Ne
                          } else {
                            Pe = ce;
                            xe = Ne;
                            break
                          }
                        }
                      } else {
                        Pe = he;
                        xe = ue
                      }
                      o[G >> 2] = Pe - xe;
                      if ((xe | 0) > 0) {
                        De = 0
                      } else {
                        Ie = xe;
                        break
                      }
                      while (1) {
                        ae = oe + (De + ie << 2) | 0;
                        C = +u[ae >> 2];
                        pe = d + (De << 2) | 0;
                        u[ae >> 2] = C * .699999988079071 + +u[Q >> 2] * .30000001192092896 + (k * +u[pe >> 2] - v * +u[Z >> 2]);
                        u[Q >> 2] = C;
                        u[Z >> 2] = +u[pe >> 2];
                        C = +u[$ >> 2] * .800000011920929 + +u[ae >> 2] * .20000000298023224;
                        u[$ >> 2] = C;
                        u[ae >> 2] = +u[ae >> 2] - C;
                        ae = De + 1 | 0;
                        pe = o[y >> 2] | 0;
                        if ((ae | 0) < (pe | 0)) {
                          De = ae
                        } else {
                          Ie = pe;
                          break
                        }
                      }
                    } else {
                      Ie = Re
                    }
                  } while (0);
                  ie = te + 1 | 0;
                  if ((ie | 0) < (o[z >> 2] | 0)) {
                    w = ke;
                    E = Ae;
                    ee = Fe;
                    te = ie;
                    ne = Ie
                  } else {
                    x = 1091;
                    break
                  }
                }
                if ((x | 0) == 1046) {
                  Et(12880, 1321);
                  return 0
                } else if ((x | 0) == 1074) {
                  Et(12800, 1397);
                  return 0
                } else if ((x | 0) == 1091) {
                  Le = ke * .25;
                  Ue = Fe;
                  break
                }
              } else {
                Le = 0.0;
                Ue = 40
              }
            } while (0);
            Fe = o[T >> 2] | 0;
            Ie = f;
            f = f + (Fe * 4 | 0) | 0;
            f = f + 7 & -8;
            do {
              if ((o[e + 136 >> 2] | 0) == 0) {
                x = 1096
              } else {
                ke = +u[(o[(o[I >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0) + 48 >> 2];
                if (ke <= 0.0) {
                  x = 1096;
                  break
                }
                if ((o[L >> 2] | 0) != 0) {
                  x = 1096;
                  break
                }
                Re = e + 52 | 0;
                De = o[y >> 2] | 0;
                d = e + 60 | 0;
                Jr((o[Re >> 2] | 0) + (- De << 2) | 0, s, o[d >> 2] | 0, Fe, De << 1, Ue, 40, ke, c);
                De = o[y >> 2] | 0;
                xe = De << 1;
                Jr((o[Re >> 2] | 0) + (De << 2) | 0, s + (xe << 2) | 0, o[d >> 2] | 0, o[T >> 2] | 0, xe, Ue, 40, +u[(o[(o[I >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0) + 48 >> 2], c)
              }
            } while (0);
            if ((x | 0) == 1096) {
              x = (o[e + 52 >> 2] | 0) + (- (o[y >> 2] | 0) << 2) | 0;
              h = o[D >> 2] << 2;
              Gn(t | 0, x | 0, h) | 0
            }
            do {
              if ((o[L >> 2] | 0) != 0) {
                h = e + 52 | 0;
                ke = B / (+ zr(o[h >> 2] | 0, o[D >> 2] | 0) + 1.0);
                Ae = ke > 2.0 ? 2.0 : ke;
                if ((o[D >> 2] | 0) > 0) {
                  qe = 0
                } else {
                  break
                }
                do {
                  x = (o[h >> 2] | 0) + (qe << 2) | 0;
                  u[x >> 2] = Ae * +u[x >> 2];
                  u[s + (qe << 2) >> 2] = +u[(o[h >> 2] | 0) + (qe - (o[y >> 2] | 0) << 2) >> 2];
                  qe = qe + 1 | 0
                } while ((qe | 0) < (o[D >> 2] | 0))
              }
            } while (0);
            qe = o[z >> 2] | 0;
            if ((qe | 0) > 0) {
              h = e + 56 | 0;
              x = e + 76 | 0;
              t = e + 60 | 0;
              I = e + 64 | 0;
              Fe = 0;
              xe = qe;
              qe = o[T >> 2] | 0;
              while (1) {
                d = s + ((re(o[y >> 2] | 0, Fe) | 0) << 2) | 0;
                it(o[h >> 2] | 0, F, Ie, qe, Fe, xe);
                nt(Ie, o[T >> 2] | 0, .0020000000949949026);
                tt(Ie, q, o[T >> 2] | 0, c);
                De = o[T >> 2] | 0;
                if ((De | 0) > 0) {
                  Re = 0;
                  Ae = 1.0;
                  while (1) {
                    ke = Ae + (+ u[q + ((Re | 1) << 2) >> 2] - +u[q + (Re << 2) >> 2]);
                    Pe = Re + 2 | 0;
                    if ((Pe | 0) < (De | 0)) {
                      Re = Pe;
                      Ae = ke
                    } else {
                      He = ke;
                      break
                    }
                  }
                } else {
                  He = 1.0
                }
                u[(o[x >> 2] | 0) + (Fe << 2) >> 2] = He;
                jr(d, o[t >> 2] | 0, d, o[y >> 2] | 0, o[T >> 2] | 0, o[I >> 2] | 0, c);
                Re = o[T >> 2] | 0;
                if ((Re | 0) > 0) {
                  De = 0;
                  while (1) {
                    u[(o[t >> 2] | 0) + (De << 2) >> 2] = +u[q + (De << 2) >> 2];
                    Pe = De + 1 | 0;
                    Ne = o[T >> 2] | 0;
                    if ((Pe | 0) < (Ne | 0)) {
                      De = Pe
                    } else {
                      Ve = Ne;
                      break
                    }
                  }
                } else {
                  Ve = Re
                }
                De = Fe + 1 | 0;
                d = o[z >> 2] | 0;
                if ((De | 0) < (d | 0)) {
                  Fe = De;
                  xe = d;
                  qe = Ve
                } else {
                  break
                }
              }
            }
            if ((o[e + 504 >> 2] | 0) != 0) {
              Br(s, s, o[D >> 2] | 0, (o[e + 500 >> 2] | 0) != 0 ? 3 : 1, e + 68 | 0)
            }
            He = B + 1.0;
            u[e + 84 >> 2] = He;
            D = e + 88 | 0;
            Ae = +u[D >> 2] * .9900000095367432;
            ke = Ae > He ? Ae : He;
            u[D >> 2] = ke;
            s = e + 92 | 0;
            Ae = +u[s >> 2] * 1.0099999904632568 + 1.0;
            Te = Ae < He ? Ae : He;
            u[s >> 2] = Te;
            He = Te + 1.0;
            if (ke < He) {
              u[D >> 2] = He
            }
            if ((o[T >> 2] | 0) > 0) {
              D = e + 56 | 0;
              s = 0;
              do {
                u[(o[D >> 2] | 0) + (s << 2) >> 2] = +u[F + (s << 2) >> 2];
                s = s + 1 | 0
              } while ((s | 0) < (o[T >> 2] | 0))
            }
            o[m >> 2] = 0;
            o[L >> 2] = 0;
            o[e + 96 >> 2] = Ue;
            u[e + 100 >> 2] = Le;
            Ue = e + 116 | 0;
            L = o[Ue >> 2] | 0;
            o[Ue >> 2] = L + 1;
            u[e + 104 + (L << 2) >> 2] = Le;
            if ((o[Ue >> 2] | 0) > 2) {
              o[Ue >> 2] = 0
            }
            u[e + 40 >> 2] = B;
            Be(g | 0);
            P = 0;
            f = n;
            return P | 0
          }
          function gt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0.0,
              v = 0,
              k = 0;
            n = f;
            f = f + 40 | 0;
            i = n | 0;
            a = n + 8 | 0;
            s = n + 16 | 0;
            l = n + 24 | 0;
            c = n + 32 | 0;
            switch (r | 0) {
              case 8:
              case 6:
                {
                  d = o[t >> 2] | 0;
                  o[e + 212 >> 2] = d;
                  o[e + 216 >> 2] = d;
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 17:
                {
                  o[t >> 2] = o[e + 192 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 18:
                {
                  o[l >> 2] = 10;
                  d = o[t >> 2] | 0;
                  h = l;
                  m = c;
                  while (1) {
                    Wt(e, 4, h) | 0;
                    Wt(e, 19, m) | 0;
                    if ((o[c >> 2] | 0) <= (d | 0)) {
                      _ = 0;
                      w = 1227;
                      break
                    }
                    b = o[l >> 2] | 0;
                    o[l >> 2] = b - 1;
                    if ((b | 0) <= 0) {
                      _ = 0;
                      w = 1232;
                      break
                    }
                  }
                  if ((w | 0) == 1227) {
                    f = n;
                    return _ | 0
                  } else if ((w | 0) == 1232) {
                    f = n;
                    return _ | 0
                  }
                  break
                };
              case 12:
                {
                  o[e + 156 >> 2] = o[t >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 101:
                {
                  w = e + 16 | 0;
                  if ((o[w >> 2] | 0) <= 0) {
                    _ = 0;
                    f = n;
                    return _ | 0
                  }
                  l = e + 80 | 0;
                  d = e + 12 | 0;
                  c = t;
                  m = 0;
                  while (1) {
                    h = o[d >> 2] | 0;
                    u[c + (m << 2) >> 2] = +zr((o[l >> 2] | 0) + ((re(h, m) | 0) << 2) | 0, h);
                    h = m + 1 | 0;
                    if ((h | 0) < (o[w >> 2] | 0)) {
                      m = h
                    } else {
                      _ = 0;
                      break
                    }
                  }
                  f = n;
                  return _ | 0
                };
              case 34:
                {
                  o[e + 168 >> 2] = o[t >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 35:
                {
                  o[t >> 2] = o[e + 168 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 42:
                {
                  o[e + 160 >> 2] = o[t >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 43:
                {
                  o[t >> 2] = o[e + 160 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 44:
                {
                  o[e + 224 >> 2] = o[t >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 45:
                {
                  o[t >> 2] = o[e + 224 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 100:
                {
                  m = t;
                  w = e + 16 | 0;
                  if ((o[w >> 2] | 0) <= 0) {
                    _ = 0;
                    f = n;
                    return _ | 0
                  }
                  l = e + 136 | 0;
                  c = 0;
                  while (1) {
                    u[m + (c << 2) >> 2] = +u[(o[l >> 2] | 0) + (c << 2) >> 2];
                    d = c + 1 | 0;
                    if ((d | 0) < (o[w >> 2] | 0)) {
                      c = d
                    } else {
                      _ = 0;
                      break
                    }
                  }
                  f = n;
                  return _ | 0
                };
              case 29:
                {
                  u[t >> 2] = +u[e + 152 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 4:
                {
                  c = o[t >> 2] | 0;
                  w = (c | 0) < 0 ? 0 : c;
                  c = o[(o[o[e >> 2] >> 2] | 0) + 100 + (((w | 0) > 10 ? 10 : w) << 2) >> 2] | 0;
                  o[e + 212 >> 2] = c;
                  o[e + 216 >> 2] = c;
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 15:
                {
                  u[t >> 2] = +u[e + 148 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 104:
                {
                  o[e + 140 >> 2] = t;
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 105:
                {
                  o[e + 220 >> 2] = o[t >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 106:
                {
                  o[t >> 2] = o[e + 68 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 9:
              case 7:
                {
                  o[t >> 2] = o[e + 212 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 39:
                {
                  o[t >> 2] = (o[e + 20 >> 2] | 0) - (o[e + 8 >> 2] | 0);
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 40:
                {
                  c = o[t >> 2] | 0;
                  w = e + 200 | 0;
                  o[w >> 2] = c;
                  if ((c | 0) <= 100) {
                    _ = 0;
                    f = n;
                    return _ | 0
                  }
                  o[w >> 2] = 100;
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 41:
                {
                  o[t >> 2] = o[e + 200 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 32:
                {
                  w = t;
                  c = o[w >> 2] | 0;
                  o[e + 176 >> 2] = c;
                  l = (c | 0) != 0;
                  o[e + 156 >> 2] = l & 1;
                  if (!l) {
                    _ = 0;
                    f = n;
                    return _ | 0
                  }
                  o[i >> 2] = 10;
                  l = o[w >> 2] | 0;
                  w = i;
                  c = a;
                  while (1) {
                    Wt(e, 4, w) | 0;
                    Wt(e, 19, c) | 0;
                    m = o[i >> 2] | 0;
                    if ((o[a >> 2] | 0) <= (l | 0)) {
                      E = m;
                      break
                    }
                    d = m - 1 | 0;
                    o[i >> 2] = d;
                    if ((m | 0) <= 0) {
                      E = d;
                      break
                    }
                  }
                  S = +(E | 0);
                  u[s >> 2] = S < 0.0 ? 0.0 : S;
                  Wt(e, 14, s) | 0;
                  u[e + 188 >> 2] = 0.0;
                  u[e + 180 >> 2] = 0.0;
                  u[e + 184 >> 2] = 0.0;
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 3:
                {
                  o[t >> 2] = o[e + 8 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 30:
                {
                  o[e + 164 >> 2] = o[t >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 25:
                {
                  o[t >> 2] = o[e + 196 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 26:
                {
                  o[e + 40 >> 2] = 1;
                  o[e + 4 >> 2] = 1;
                  s = e + 24 | 0;
                  E = o[s >> 2] | 0;
                  do {
                    if ((E | 0) > 0) {
                      i = e + 100 | 0;
                      l = 0;
                      a = E;
                      while (1) {
                        c = l + 1 | 0;
                        u[(o[i >> 2] | 0) + (l << 2) >> 2] = +(c | 0) * 3.1415927410125732 / +(a + 1 | 0);
                        v = o[s >> 2] | 0;
                        if ((c | 0) < (v | 0)) {
                          l = c;
                          a = v
                        } else {
                          break
                        }
                      }
                      if ((v | 0) <= 0) {
                        break
                      }
                      a = e + 120 | 0;
                      l = e + 108 | 0;
                      i = e + 116 | 0;
                      c = e + 112 | 0;
                      w = 0;
                      do {
                        u[(o[a >> 2] | 0) + (w << 2) >> 2] = 0.0;
                        u[(o[l >> 2] | 0) + (w << 2) >> 2] = 0.0;
                        u[(o[i >> 2] | 0) + (w << 2) >> 2] = 0.0;
                        u[(o[c >> 2] | 0) + (w << 2) >> 2] = 0.0;
                        w = w + 1 | 0
                      } while ((w | 0) < (o[s >> 2] | 0))
                    }
                  } while (0);
                  s = e + 8 | 0;
                  v = o[s >> 2] | 0;
                  E = e + 32 | 0;
                  if ((v + 1 + (o[E >> 2] | 0) | 0) > 0) {
                    w = e + 84 | 0;
                    c = e + 76 | 0;
                    i = 0;
                    while (1) {
                      u[(o[w >> 2] | 0) + (i << 2) >> 2] = 0.0;
                      u[(o[c >> 2] | 0) + (i << 2) >> 2] = 0.0;
                      l = i + 1 | 0;
                      a = o[s >> 2] | 0;
                      if ((l | 0) < (a + 1 + (o[E >> 2] | 0) | 0)) {
                        i = l
                      } else {
                        k = a;
                        break
                      }
                    }
                  } else {
                    k = v
                  }
                  v = e + 20 | 0;
                  if (((o[v >> 2] | 0) - k | 0) <= 0) {
                    _ = 0;
                    f = n;
                    return _ | 0
                  }
                  k = e + 72 | 0;
                  i = 0;
                  while (1) {
                    u[(o[k >> 2] | 0) + (i << 2) >> 2] = 0.0;
                    E = i + 1 | 0;
                    if ((E | 0) < ((o[v >> 2] | 0) - (o[s >> 2] | 0) | 0)) {
                      i = E
                    } else {
                      _ = 0;
                      break
                    }
                  }
                  f = n;
                  return _ | 0
                };
              case 14:
                {
                  u[e + 148 >> 2] = +u[t >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 31:
                {
                  o[t >> 2] = o[e + 164 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 19:
                {
                  i = o[(o[e + 208 >> 2] | 0) + (o[e + 212 >> 2] << 2) >> 2] | 0;
                  s = o[e + 196 >> 2] | 0;
                  if ((i | 0) == 0) {
                    o[t >> 2] = (s * 5 | 0 | 0) / (o[e + 8 >> 2] | 0) | 0;
                    _ = 0;
                    f = n;
                    return _ | 0
                  } else {
                    v = re(o[i + 52 >> 2] | 0, s) | 0;
                    o[t >> 2] = (v | 0) / (o[e + 8 >> 2] | 0) | 0;
                    _ = 0;
                    f = n;
                    return _ | 0
                  }
                  break
                };
              case 24:
                {
                  o[e + 196 >> 2] = o[t >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 13:
                {
                  o[t >> 2] = o[e + 156 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 33:
                {
                  o[t >> 2] = o[e + 176 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 36:
                {
                  o[e + 204 >> 2] = o[t >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 37:
                {
                  o[t >> 2] = o[e + 204 >> 2];
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              case 16:
                {
                  v = o[t >> 2] | 0;
                  t = e + 192 | 0;
                  o[t >> 2] = v;
                  if ((v | 0) >= 0) {
                    _ = 0;
                    f = n;
                    return _ | 0
                  }
                  o[t >> 2] = 0;
                  _ = 0;
                  f = n;
                  return _ | 0
                };
              default:
                {
                  ve(o[p >> 2] | 0, 12680, (t = f, f = f + 16 | 0, o[t >> 2] = 12712, o[t + 8 >> 2] = r, t) | 0) | 0;
                  f = t;
                  _ = -1;
                  f = n;
                  return _ | 0
                }
            }
            return 0
          }
          function yt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0.0,
              d = 0.0,
              _ = 0,
              h = 0,
              m = 0;
            n = f;
            switch (r | 0) {
              case 19:
                {
                  i = o[(o[e + 128 >> 2] | 0) + (o[e + 132 >> 2] << 2) >> 2] | 0;
                  a = o[e + 36 >> 2] | 0;
                  if ((i | 0) == 0) {
                    o[t >> 2] = (a * 5 | 0 | 0) / (o[e + 12 >> 2] | 0) | 0;
                    s = 0;
                    f = n;
                    return s | 0
                  } else {
                    l = re(o[i + 52 >> 2] | 0, a) | 0;
                    o[t >> 2] = (l | 0) / (o[e + 12 >> 2] | 0) | 0;
                    s = 0;
                    f = n;
                    return s | 0
                  }
                  break
                };
              case 24:
                {
                  o[e + 36 >> 2] = o[t >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 47:
                {
                  c = +u[e + 92 >> 2];
                  d = +$(+ u[e + 84 >> 2] / c) / +$(+ u[e + 88 >> 2] / c);
                  c = d > 1.0 ? 1.0 : d;
                  o[t >> 2] = c > 0.0 ? ~~(c * 100.0) : 0;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 100:
                {
                  l = t;
                  a = e + 20 | 0;
                  if ((o[a >> 2] | 0) <= 0) {
                    s = 0;
                    f = n;
                    return s | 0
                  }
                  i = e + 76 | 0;
                  _ = 0;
                  while (1) {
                    u[l + (_ << 2) >> 2] = +u[(o[i >> 2] | 0) + (_ << 2) >> 2];
                    h = _ + 1 | 0;
                    if ((h | 0) < (o[a >> 2] | 0)) {
                      _ = h
                    } else {
                      s = 0;
                      break
                    }
                  }
                  f = n;
                  return s | 0
                };
              case 20:
                {
                  _ = t;
                  a = e + 140 | 0;
                  o[a + ((o[_ >> 2] | 0) * 20 | 0) + 4 >> 2] = o[t + 4 >> 2];
                  o[a + ((o[_ >> 2] | 0) * 20 | 0) + 8 >> 2] = o[t + 8 >> 2];
                  i = o[_ >> 2] | 0;
                  o[a + (i * 20 | 0) >> 2] = i;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 8:
              case 6:
                {
                  o[e + 132 >> 2] = o[t >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 36:
                {
                  o[e + 124 >> 2] = o[t >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 106:
                {
                  o[t >> 2] = o[e + 44 >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 26:
                {
                  i = e + 24 | 0;
                  if ((o[i >> 2] | 0) > 0) {
                    a = e + 64 | 0;
                    _ = 0;
                    do {
                      u[(o[a >> 2] | 0) + (_ << 2) >> 2] = 0.0;
                      _ = _ + 1 | 0
                    } while ((_ | 0) < (o[i >> 2] | 0))
                  }
                  i = e + 12 | 0;
                  _ = e + 32 | 0;
                  if (((o[i >> 2] | 0) + 1 + (o[_ >> 2] | 0) | 0) <= 0) {
                    s = 0;
                    f = n;
                    return s | 0
                  }
                  a = e + 48 | 0;
                  l = 0;
                  while (1) {
                    u[(o[a >> 2] | 0) + (l << 2) >> 2] = 0.0;
                    h = l + 1 | 0;
                    if ((h | 0) < ((o[i >> 2] | 0) + 1 + (o[_ >> 2] | 0) | 0)) {
                      l = h
                    } else {
                      s = 0;
                      break
                    }
                  }
                  f = n;
                  return s | 0
                };
              case 101:
                {
                  l = e + 20 | 0;
                  if ((o[l >> 2] | 0) <= 0) {
                    s = 0;
                    f = n;
                    return s | 0
                  }
                  _ = e + 52 | 0;
                  i = e + 16 | 0;
                  a = t;
                  h = 0;
                  while (1) {
                    m = o[i >> 2] | 0;
                    u[a + (h << 2) >> 2] = +zr((o[_ >> 2] | 0) + ((re(m, h) | 0) << 2) | 0, m);
                    m = h + 1 | 0;
                    if ((m | 0) < (o[l >> 2] | 0)) {
                      h = m
                    } else {
                      s = 0;
                      break
                    }
                  }
                  f = n;
                  return s | 0
                };
              case 9:
              case 7:
                {
                  o[t >> 2] = o[e + 132 >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 0:
                {
                  o[e + 136 >> 2] = o[t >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 22:
                {
                  o[e + 464 >> 2] = o[t + 4 >> 2];
                  o[e + 468 >> 2] = o[t + 8 >> 2];
                  o[e + 460 >> 2] = o[t >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 3:
                {
                  o[t >> 2] = o[e + 12 >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 105:
                {
                  o[e + 500 >> 2] = o[t >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 37:
                {
                  o[t >> 2] = o[e + 124 >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 39:
                {
                  o[t >> 2] = o[e + 16 >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 1:
                {
                  o[t >> 2] = o[e + 136 >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 103:
                {
                  o[t >> 2] = o[e + 496 >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 25:
                {
                  o[t >> 2] = o[e + 36 >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 44:
                {
                  o[e + 504 >> 2] = o[t >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 45:
                {
                  o[t >> 2] = o[e + 504 >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 104:
                {
                  o[e + 80 >> 2] = t;
                  s = 0;
                  f = n;
                  return s | 0
                };
              default:
                {
                  ve(o[p >> 2] | 0, 12680, (t = f, f = f + 16 | 0, o[t >> 2] = 12712, o[t + 8 >> 2] = r, t) | 0) | 0;
                  f = t;
                  s = -1;
                  f = n;
                  return s | 0
                }
            }
            return 0
          }
          function Mt(e, r, t, i) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            i = i | 0;
            var o = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              d = 0.0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0.0,
              w = 0.0,
              b = 0.0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0,
              y = 0.0,
              M = 0,
              F = 0,
              A = 0.0,
              T = 0.0,
              O = 0,
              R = 0,
              C = 0.0,
              N = 0.0,
              P = 0.0,
              x = 0.0,
              D = 0.0,
              I = 0.0,
              L = 0.0,
              B = 0.0,
              U = 0.0,
              q = 0.0,
              H = 0,
              z = 0,
              V = 0,
              j = 0,
              X = 0,
              K = 0;
            o = f;
            f = f + 40 | 0;
            a = o | 0;
            s = (t | 0) > 0;
            do {
              if (s) {
                l = 0;
                do {
                  u[r + (l << 2) >> 2] = +u[e + (l << 2) >> 2];
                  l = l + 1 | 0
                } while ((l | 0) < (t | 0));
                if (!s) {
                  c = 0;
                  d = 999999986991104.0;
                  _ = 0;
                  h = 1326;
                  break
                }
                l = t - 1 | 0;
                p = 0;
                while (1) {
                  m = +u[r + (p << 2) >> 2];
                  if ((p | 0) == 0) {
                    w = m
                  } else {
                    w = m - +u[r + (p - 1 << 2) >> 2]
                  }
                  if ((p | 0) == (l | 0)) {
                    b = 3.141592653589793 - m;
                    E = t
                  } else {
                    S = p + 1 | 0;
                    b = +u[r + (S << 2) >> 2] - m;
                    E = S
                  }
                  u[a + (p << 2) >> 2] = 10.0 / ((b < w ? b : w) + .04);
                  if ((E | 0) < (t | 0)) {
                    p = E
                  } else {
                    break
                  }
                }
                if (s) {
                  v = 0
                } else {
                  c = 0;
                  d = 999999986991104.0;
                  _ = 0;
                  h = 1326;
                  break
                }
                do {
                  p = r + (v << 2) | 0;
                  u[p >> 2] = +u[p >> 2] - (+ (v | 0) * .25 + .25);
                  v = v + 1 | 0
                } while ((v | 0) < (t | 0));
                if (s) {
                  k = 0
                } else {
                  c = 0;
                  d = 999999986991104.0;
                  _ = 0;
                  h = 1326;
                  break
                }
                do {
                  p = r + (k << 2) | 0;
                  u[p >> 2] = +u[p >> 2] * 256.0;
                  k = k + 1 | 0
                } while ((k | 0) < (t | 0));
                if (s) {
                  g = 0;
                  y = 999999986991104.0;
                  M = 0;
                  F = 12e3
                } else {
                  c = 0;
                  d = 999999986991104.0;
                  _ = 0;
                  h = 1326;
                  break
                }
                while (1) {
                  p = 0;
                  m = 0.0;
                  l = F;
                  while (1) {
                    A = +u[r + (p << 2) >> 2] - +(n[l] | 0);
                    T = m + A * A;
                    S = p + 1 | 0;
                    if ((S | 0) < (t | 0)) {
                      p = S;
                      m = T;
                      l = l + 1 | 0
                    } else {
                      break
                    }
                  }
                  l = T < y;
                  p = l ? g : M;
                  S = g + 1 | 0;
                  if ((S | 0) < 64) {
                    g = S;
                    y = l ? T : y;
                    M = p;
                    F = F + t | 0
                  } else {
                    O = p;
                    break
                  }
                }
              } else {
                c = 0;
                d = 999999986991104.0;
                _ = 0;
                h = 1326
              }
            } while (0);
            if ((h | 0) == 1326) {
              while (1) {
                h = 0;
                F = d > 0.0;
                M = F ? c : _;
                g = c + 1 | 0;
                if ((g | 0) < 64) {
                  c = g;
                  d = F ? 0.0 : d;
                  _ = M;
                  h = 1326
                } else {
                  O = M;
                  break
                }
              }
            }
            do {
              if (s) {
                h = re(O, t) | 0;
                _ = 0;
                do {
                  c = r + (_ << 2) | 0;
                  u[c >> 2] = +u[c >> 2] - +(n[12e3 + (_ + h) | 0] | 0);
                  _ = _ + 1 | 0
                } while ((_ | 0) < (t | 0));
                kr(i, O, 6);
                if (s) {
                  R = 0
                } else {
                  break
                }
                do {
                  _ = r + (R << 2) | 0;
                  u[_ >> 2] = +u[_ >> 2] * 2.0;
                  R = R + 1 | 0
                } while ((R | 0) < (t | 0))
              } else {
                kr(i, O, 6)
              }
            } while (0);
            d = +u[r >> 2];
            y = +u[a >> 2];
            O = r + 4 | 0;
            T = +u[O >> 2];
            w = +u[a + 4 >> 2];
            R = r + 8 | 0;
            b = +u[R >> 2];
            m = +u[a + 8 >> 2];
            _ = r + 12 | 0;
            A = +u[_ >> 2];
            C = +u[a + 12 >> 2];
            h = r + 16 | 0;
            N = +u[h >> 2];
            P = +u[a + 16 >> 2];
            c = 0;
            x = 999999986991104.0;
            M = 0;
            F = 11040;
            while (1) {
              D = d - +(n[F] | 0);
              I = T - +(n[F + 1 | 0] | 0);
              L = b - +(n[F + 2 | 0] | 0);
              B = A - +(n[F + 3 | 0] | 0);
              U = N - +(n[F + 4 | 0] | 0);
              q = y * D * D + 0.0 + w * I * I + m * L * L + C * B * B + P * U * U;
              g = q < x;
              H = g ? c : M;
              k = c + 1 | 0;
              if ((k | 0) < 64) {
                c = k;
                x = g ? q : x;
                M = H;
                F = F + 5 | 0
              } else {
                break
              }
            }
            F = H * 5 | 0;
            u[r >> 2] = d - +(n[11040 + F | 0] | 0);
            u[O >> 2] = T - +(n[F + 11041 | 0] | 0);
            u[R >> 2] = b - +(n[F + 11042 | 0] | 0);
            u[_ >> 2] = A - +(n[F + 11043 | 0] | 0);
            u[h >> 2] = N - +(n[F + 11044 | 0] | 0);
            kr(i, H, 6);
            N = +u[r >> 2] * 2.0;
            u[r >> 2] = N;
            A = +u[O >> 2] * 2.0;
            u[O >> 2] = A;
            b = +u[R >> 2] * 2.0;
            u[R >> 2] = b;
            T = +u[_ >> 2] * 2.0;
            u[_ >> 2] = T;
            d = +u[h >> 2] * 2.0;
            u[h >> 2] = d;
            H = 0;
            x = 999999986991104.0;
            F = 0;
            M = 10720;
            while (1) {
              q = N - +(n[M] | 0);
              U = A - +(n[M + 1 | 0] | 0);
              B = b - +(n[M + 2 | 0] | 0);
              L = T - +(n[M + 3 | 0] | 0);
              I = d - +(n[M + 4 | 0] | 0);
              D = y * q * q + 0.0 + w * U * U + m * B * B + C * L * L + P * I * I;
              c = D < x;
              z = c ? H : F;
              g = H + 1 | 0;
              if ((g | 0) < 64) {
                H = g;
                x = c ? D : x;
                F = z;
                M = M + 5 | 0
              } else {
                break
              }
            }
            M = z * 5 | 0;
            u[r >> 2] = N - +(n[10720 + M | 0] | 0);
            u[O >> 2] = A - +(n[M + 10721 | 0] | 0);
            u[R >> 2] = b - +(n[M + 10722 | 0] | 0);
            u[_ >> 2] = T - +(n[M + 10723 | 0] | 0);
            u[h >> 2] = d - +(n[M + 10724 | 0] | 0);
            kr(i, z, 6);
            z = r + 20 | 0;
            d = +u[z >> 2];
            T = +u[a + 20 >> 2];
            M = r + 24 | 0;
            b = +u[M >> 2];
            A = +u[a + 24 >> 2];
            h = r + 28 | 0;
            N = +u[h >> 2];
            x = +u[a + 28 >> 2];
            _ = r + 32 | 0;
            P = +u[_ >> 2];
            C = +u[a + 32 >> 2];
            R = r + 36 | 0;
            m = +u[R >> 2];
            w = +u[a + 36 >> 2];
            a = 0;
            y = 999999986991104.0;
            O = 0;
            F = 11680;
            while (1) {
              D = d - +(n[F] | 0);
              I = b - +(n[F + 1 | 0] | 0);
              L = N - +(n[F + 2 | 0] | 0);
              B = P - +(n[F + 3 | 0] | 0);
              U = m - +(n[F + 4 | 0] | 0);
              q = T * D * D + 0.0 + A * I * I + x * L * L + C * B * B + w * U * U;
              H = q < y;
              V = H ? a : O;
              c = a + 1 | 0;
              if ((c | 0) < 64) {
                a = c;
                y = H ? q : y;
                O = V;
                F = F + 5 | 0
              } else {
                break
              }
            }
            F = V * 5 | 0;
            u[z >> 2] = d - +(n[11680 + F | 0] | 0);
            u[M >> 2] = b - +(n[F + 11681 | 0] | 0);
            u[h >> 2] = N - +(n[F + 11682 | 0] | 0);
            u[_ >> 2] = P - +(n[F + 11683 | 0] | 0);
            u[R >> 2] = m - +(n[F + 11684 | 0] | 0);
            kr(i, V, 6);
            m = +u[z >> 2] * 2.0;
            u[z >> 2] = m;
            P = +u[M >> 2] * 2.0;
            u[M >> 2] = P;
            N = +u[h >> 2] * 2.0;
            u[h >> 2] = N;
            b = +u[_ >> 2] * 2.0;
            u[_ >> 2] = b;
            d = +u[R >> 2] * 2.0;
            u[R >> 2] = d;
            V = 0;
            y = 999999986991104.0;
            F = 0;
            O = 11360;
            while (1) {
              q = m - +(n[O] | 0);
              U = P - +(n[O + 1 | 0] | 0);
              B = N - +(n[O + 2 | 0] | 0);
              L = b - +(n[O + 3 | 0] | 0);
              I = d - +(n[O + 4 | 0] | 0);
              D = T * q * q + 0.0 + A * U * U + x * B * B + C * L * L + w * I * I;
              a = D < y;
              j = a ? V : F;
              H = V + 1 | 0;
              if ((H | 0) < 64) {
                V = H;
                y = a ? D : y;
                F = j;
                O = O + 5 | 0
              } else {
                break
              }
            }
            O = j * 5 | 0;
            u[z >> 2] = m - +(n[11360 + O | 0] | 0);
            u[M >> 2] = P - +(n[O + 11361 | 0] | 0);
            u[h >> 2] = N - +(n[O + 11362 | 0] | 0);
            u[_ >> 2] = b - +(n[O + 11363 | 0] | 0);
            u[R >> 2] = d - +(n[O + 11364 | 0] | 0);
            kr(i, j, 6);
            if (s) {
              X = 0
            } else {
              f = o;
              return
            }
            do {
              j = r + (X << 2) | 0;
              u[j >> 2] = +u[j >> 2] * 97656.0e-8;
              X = X + 1 | 0
            } while ((X | 0) < (t | 0));
            if (s) {
              K = 0
            } else {
              f = o;
              return
            }
            do {
              s = r + (K << 2) | 0;
              u[s >> 2] = +u[e + (K << 2) >> 2] - +u[s >> 2];
              K = K + 1 | 0
            } while ((K | 0) < (t | 0));
            f = o;
            return
          }
          function Ft(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var i = 0,
              o = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              f = 0,
              d = 0,
              _ = 0;
            if ((r | 0) > 0) {
              i = 0;
              do {
                u[e + (i << 2) >> 2] = +(i | 0) * .25 + .25;
                i = i + 1 | 0
              } while ((i | 0) < (r | 0))
            }
            r = (yr(t, 6) | 0) * 10 | 0;
            u[e >> 2] = +u[e >> 2] + +(n[12e3 + r | 0] | 0) * .0039062;
            i = e + 4 | 0;
            u[i >> 2] = +u[i >> 2] + +(n[12e3 + (r | 1) | 0] | 0) * .0039062;
            o = e + 8 | 0;
            u[o >> 2] = +u[o >> 2] + +(n[r + 12002 | 0] | 0) * .0039062;
            a = e + 12 | 0;
            u[a >> 2] = +u[a >> 2] + +(n[r + 12003 | 0] | 0) * .0039062;
            s = e + 16 | 0;
            u[s >> 2] = +u[s >> 2] + +(n[r + 12004 | 0] | 0) * .0039062;
            l = e + 20 | 0;
            u[l >> 2] = +u[l >> 2] + +(n[r + 12005 | 0] | 0) * .0039062;
            c = e + 24 | 0;
            u[c >> 2] = +u[c >> 2] + +(n[r + 12006 | 0] | 0) * .0039062;
            f = e + 28 | 0;
            u[f >> 2] = +u[f >> 2] + +(n[r + 12007 | 0] | 0) * .0039062;
            d = e + 32 | 0;
            u[d >> 2] = +u[d >> 2] + +(n[r + 12008 | 0] | 0) * .0039062;
            _ = e + 36 | 0;
            u[_ >> 2] = +u[_ >> 2] + +(n[r + 12009 | 0] | 0) * .0039062;
            r = (yr(t, 6) | 0) * 5 | 0;
            u[e >> 2] = +u[e >> 2] + +(n[11040 + r | 0] | 0) * .0019531;
            u[i >> 2] = +u[i >> 2] + +(n[r + 11041 | 0] | 0) * .0019531;
            u[o >> 2] = +u[o >> 2] + +(n[r + 11042 | 0] | 0) * .0019531;
            u[a >> 2] = +u[a >> 2] + +(n[r + 11043 | 0] | 0) * .0019531;
            u[s >> 2] = +u[s >> 2] + +(n[r + 11044 | 0] | 0) * .0019531;
            r = (yr(t, 6) | 0) * 5 | 0;
            u[e >> 2] = +u[e >> 2] + +(n[10720 + r | 0] | 0) * 97656.0e-8;
            u[i >> 2] = +u[i >> 2] + +(n[r + 10721 | 0] | 0) * 97656.0e-8;
            u[o >> 2] = +u[o >> 2] + +(n[r + 10722 | 0] | 0) * 97656.0e-8;
            u[a >> 2] = +u[a >> 2] + +(n[r + 10723 | 0] | 0) * 97656.0e-8;
            u[s >> 2] = +u[s >> 2] + +(n[r + 10724 | 0] | 0) * 97656.0e-8;
            r = (yr(t, 6) | 0) * 5 | 0;
            u[l >> 2] = +u[l >> 2] + +(n[11680 + r | 0] | 0) * .0019531;
            u[c >> 2] = +u[c >> 2] + +(n[r + 11681 | 0] | 0) * .0019531;
            u[f >> 2] = +u[f >> 2] + +(n[r + 11682 | 0] | 0) * .0019531;
            u[d >> 2] = +u[d >> 2] + +(n[r + 11683 | 0] | 0) * .0019531;
            u[_ >> 2] = +u[_ >> 2] + +(n[r + 11684 | 0] | 0) * .0019531;
            r = (yr(t, 6) | 0) * 5 | 0;
            u[l >> 2] = +u[l >> 2] + +(n[11360 + r | 0] | 0) * 97656.0e-8;
            u[c >> 2] = +u[c >> 2] + +(n[r + 11361 | 0] | 0) * 97656.0e-8;
            u[f >> 2] = +u[f >> 2] + +(n[r + 11362 | 0] | 0) * 97656.0e-8;
            u[d >> 2] = +u[d >> 2] + +(n[r + 11363 | 0] | 0) * 97656.0e-8;
            u[_ >> 2] = +u[_ >> 2] + +(n[r + 11364 | 0] | 0) * 97656.0e-8;
            return
          }
          function At(e, r, t, i) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            i = i | 0;
            var o = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              d = 0.0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0.0,
              w = 0.0,
              b = 0.0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0,
              y = 0.0,
              M = 0,
              F = 0,
              A = 0.0,
              T = 0.0,
              O = 0,
              R = 0,
              C = 0.0,
              N = 0.0,
              P = 0.0,
              x = 0.0,
              D = 0.0,
              I = 0.0,
              L = 0.0,
              B = 0.0,
              U = 0.0,
              q = 0.0,
              H = 0,
              z = 0,
              V = 0,
              j = 0;
            o = f;
            f = f + 40 | 0;
            a = o | 0;
            s = (t | 0) > 0;
            do {
              if (s) {
                l = 0;
                do {
                  u[r + (l << 2) >> 2] = +u[e + (l << 2) >> 2];
                  l = l + 1 | 0
                } while ((l | 0) < (t | 0));
                if (!s) {
                  c = 0;
                  d = 999999986991104.0;
                  _ = 0;
                  h = 1370;
                  break
                }
                l = t - 1 | 0;
                p = 0;
                while (1) {
                  m = +u[r + (p << 2) >> 2];
                  if ((p | 0) == 0) {
                    w = m
                  } else {
                    w = m - +u[r + (p - 1 << 2) >> 2]
                  }
                  if ((p | 0) == (l | 0)) {
                    b = 3.141592653589793 - m;
                    E = t
                  } else {
                    S = p + 1 | 0;
                    b = +u[r + (S << 2) >> 2] - m;
                    E = S
                  }
                  u[a + (p << 2) >> 2] = 10.0 / ((b < w ? b : w) + .04);
                  if ((E | 0) < (t | 0)) {
                    p = E
                  } else {
                    break
                  }
                }
                if (s) {
                  v = 0
                } else {
                  c = 0;
                  d = 999999986991104.0;
                  _ = 0;
                  h = 1370;
                  break
                }
                do {
                  p = r + (v << 2) | 0;
                  u[p >> 2] = +u[p >> 2] - (+ (v | 0) * .25 + .25);
                  v = v + 1 | 0
                } while ((v | 0) < (t | 0));
                if (s) {
                  k = 0
                } else {
                  c = 0;
                  d = 999999986991104.0;
                  _ = 0;
                  h = 1370;
                  break
                }
                do {
                  p = r + (k << 2) | 0;
                  u[p >> 2] = +u[p >> 2] * 256.0;
                  k = k + 1 | 0
                } while ((k | 0) < (t | 0));
                if (s) {
                  g = 0;
                  y = 999999986991104.0;
                  M = 0;
                  F = 12e3
                } else {
                  c = 0;
                  d = 999999986991104.0;
                  _ = 0;
                  h = 1370;
                  break
                }
                while (1) {
                  p = 0;
                  m = 0.0;
                  l = F;
                  while (1) {
                    A = +u[r + (p << 2) >> 2] - +(n[l] | 0);
                    T = m + A * A;
                    S = p + 1 | 0;
                    if ((S | 0) < (t | 0)) {
                      p = S;
                      m = T;
                      l = l + 1 | 0
                    } else {
                      break
                    }
                  }
                  l = T < y;
                  p = l ? g : M;
                  S = g + 1 | 0;
                  if ((S | 0) < 64) {
                    g = S;
                    y = l ? T : y;
                    M = p;
                    F = F + t | 0
                  } else {
                    O = p;
                    break
                  }
                }
              } else {
                c = 0;
                d = 999999986991104.0;
                _ = 0;
                h = 1370
              }
            } while (0);
            if ((h | 0) == 1370) {
              while (1) {
                h = 0;
                F = d > 0.0;
                M = F ? c : _;
                g = c + 1 | 0;
                if ((g | 0) < 64) {
                  c = g;
                  d = F ? 0.0 : d;
                  _ = M;
                  h = 1370
                } else {
                  O = M;
                  break
                }
              }
            }
            do {
              if (s) {
                h = re(O, t) | 0;
                _ = 0;
                do {
                  c = r + (_ << 2) | 0;
                  u[c >> 2] = +u[c >> 2] - +(n[12e3 + (_ + h) | 0] | 0);
                  _ = _ + 1 | 0
                } while ((_ | 0) < (t | 0));
                kr(i, O, 6);
                if (s) {
                  R = 0
                } else {
                  break
                }
                do {
                  _ = r + (R << 2) | 0;
                  u[_ >> 2] = +u[_ >> 2] * 2.0;
                  R = R + 1 | 0
                } while ((R | 0) < (t | 0))
              } else {
                kr(i, O, 6)
              }
            } while (0);
            d = +u[r >> 2];
            O = r + 4 | 0;
            y = +u[O >> 2];
            R = r + 8 | 0;
            T = +u[R >> 2];
            _ = r + 12 | 0;
            w = +u[_ >> 2];
            h = r + 16 | 0;
            b = +u[h >> 2];
            m = +u[a >> 2];
            A = +u[a + 4 >> 2];
            C = +u[a + 8 >> 2];
            N = +u[a + 12 >> 2];
            P = +u[a + 16 >> 2];
            c = 0;
            x = 999999986991104.0;
            M = 0;
            F = 11040;
            while (1) {
              D = d - +(n[F] | 0);
              I = y - +(n[F + 1 | 0] | 0);
              L = T - +(n[F + 2 | 0] | 0);
              B = w - +(n[F + 3 | 0] | 0);
              U = b - +(n[F + 4 | 0] | 0);
              q = m * D * D + 0.0 + A * I * I + C * L * L + N * B * B + P * U * U;
              g = q < x;
              H = g ? c : M;
              k = c + 1 | 0;
              if ((k | 0) >= 64) {
                break
              }
              c = k;
              x = g ? q : x;
              M = H;
              F = F + 5 | 0
            }
            F = H * 5 | 0;
            u[r >> 2] = d - +(n[11040 + F | 0] | 0);
            u[O >> 2] = y - +(n[F + 11041 | 0] | 0);
            u[R >> 2] = T - +(n[F + 11042 | 0] | 0);
            u[_ >> 2] = w - +(n[F + 11043 | 0] | 0);
            u[h >> 2] = b - +(n[F + 11044 | 0] | 0);
            kr(i, H, 6);
            H = r + 20 | 0;
            b = +u[H >> 2];
            w = +u[a + 20 >> 2];
            F = r + 24 | 0;
            T = +u[F >> 2];
            y = +u[a + 24 >> 2];
            h = r + 28 | 0;
            d = +u[h >> 2];
            x = +u[a + 28 >> 2];
            _ = r + 32 | 0;
            P = +u[_ >> 2];
            N = +u[a + 32 >> 2];
            R = r + 36 | 0;
            C = +u[R >> 2];
            A = +u[a + 36 >> 2];
            a = 0;
            m = 999999986991104.0;
            O = 0;
            M = 11680;
            while (1) {
              q = b - +(n[M] | 0);
              U = T - +(n[M + 1 | 0] | 0);
              B = d - +(n[M + 2 | 0] | 0);
              L = P - +(n[M + 3 | 0] | 0);
              I = C - +(n[M + 4 | 0] | 0);
              D = w * q * q + 0.0 + y * U * U + x * B * B + N * L * L + A * I * I;
              c = D < m;
              z = c ? a : O;
              g = a + 1 | 0;
              if ((g | 0) < 64) {
                a = g;
                m = c ? D : m;
                O = z;
                M = M + 5 | 0
              } else {
                break
              }
            }
            M = z * 5 | 0;
            u[H >> 2] = b - +(n[11680 + M | 0] | 0);
            u[F >> 2] = T - +(n[M + 11681 | 0] | 0);
            u[h >> 2] = d - +(n[M + 11682 | 0] | 0);
            u[_ >> 2] = P - +(n[M + 11683 | 0] | 0);
            u[R >> 2] = C - +(n[M + 11684 | 0] | 0);
            kr(i, z, 6);
            if (s) {
              V = 0
            } else {
              f = o;
              return
            }
            do {
              z = r + (V << 2) | 0;
              u[z >> 2] = +u[z >> 2] * .0019531;
              V = V + 1 | 0
            } while ((V | 0) < (t | 0));
            if (s) {
              j = 0
            } else {
              f = o;
              return
            }
            do {
              s = r + (j << 2) | 0;
              u[s >> 2] = +u[e + (j << 2) >> 2] - +u[s >> 2];
              j = j + 1 | 0
            } while ((j | 0) < (t | 0));
            f = o;
            return
          }
          function Tt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var i = 0,
              o = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              f = 0,
              d = 0,
              _ = 0;
            if ((r | 0) > 0) {
              i = 0;
              do {
                u[e + (i << 2) >> 2] = +(i | 0) * .25 + .25;
                i = i + 1 | 0
              } while ((i | 0) < (r | 0))
            }
            r = (yr(t, 6) | 0) * 10 | 0;
            u[e >> 2] = +u[e >> 2] + +(n[12e3 + r | 0] | 0) * .0039062;
            i = e + 4 | 0;
            u[i >> 2] = +u[i >> 2] + +(n[12e3 + (r | 1) | 0] | 0) * .0039062;
            o = e + 8 | 0;
            u[o >> 2] = +u[o >> 2] + +(n[r + 12002 | 0] | 0) * .0039062;
            a = e + 12 | 0;
            u[a >> 2] = +u[a >> 2] + +(n[r + 12003 | 0] | 0) * .0039062;
            s = e + 16 | 0;
            u[s >> 2] = +u[s >> 2] + +(n[r + 12004 | 0] | 0) * .0039062;
            l = e + 20 | 0;
            u[l >> 2] = +u[l >> 2] + +(n[r + 12005 | 0] | 0) * .0039062;
            c = e + 24 | 0;
            u[c >> 2] = +u[c >> 2] + +(n[r + 12006 | 0] | 0) * .0039062;
            f = e + 28 | 0;
            u[f >> 2] = +u[f >> 2] + +(n[r + 12007 | 0] | 0) * .0039062;
            d = e + 32 | 0;
            u[d >> 2] = +u[d >> 2] + +(n[r + 12008 | 0] | 0) * .0039062;
            _ = e + 36 | 0;
            u[_ >> 2] = +u[_ >> 2] + +(n[r + 12009 | 0] | 0) * .0039062;
            r = (yr(t, 6) | 0) * 5 | 0;
            u[e >> 2] = +u[e >> 2] + +(n[11040 + r | 0] | 0) * .0019531;
            u[i >> 2] = +u[i >> 2] + +(n[r + 11041 | 0] | 0) * .0019531;
            u[o >> 2] = +u[o >> 2] + +(n[r + 11042 | 0] | 0) * .0019531;
            u[a >> 2] = +u[a >> 2] + +(n[r + 11043 | 0] | 0) * .0019531;
            u[s >> 2] = +u[s >> 2] + +(n[r + 11044 | 0] | 0) * .0019531;
            r = (yr(t, 6) | 0) * 5 | 0;
            u[l >> 2] = +u[l >> 2] + +(n[11680 + r | 0] | 0) * .0019531;
            u[c >> 2] = +u[c >> 2] + +(n[r + 11681 | 0] | 0) * .0019531;
            u[f >> 2] = +u[f >> 2] + +(n[r + 11682 | 0] | 0) * .0019531;
            u[d >> 2] = +u[d >> 2] + +(n[r + 11683 | 0] | 0) * .0019531;
            u[_ >> 2] = +u[_ >> 2] + +(n[r + 11684 | 0] | 0) * .0019531;
            return
          }
          function Ot(e, r, t, i) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            i = i | 0;
            var o = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              d = 0.0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0.0,
              w = 0.0,
              b = 0.0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0,
              y = 0.0,
              M = 0,
              F = 0,
              A = 0.0,
              T = 0.0,
              O = 0,
              R = 0,
              C = 0,
              N = 0.0,
              P = 0,
              x = 0,
              D = 0.0,
              I = 0,
              L = 0,
              B = 0.0,
              U = 0,
              q = 0,
              H = 0;
            o = f;
            f = f + 40 | 0;
            a = o | 0;
            s = (t | 0) > 0;
            do {
              if (s) {
                l = 0;
                do {
                  u[r + (l << 2) >> 2] = +u[e + (l << 2) >> 2];
                  l = l + 1 | 0
                } while ((l | 0) < (t | 0));
                if (!s) {
                  c = 0;
                  d = 999999986991104.0;
                  _ = 0;
                  h = 1411;
                  break
                }
                l = t - 1 | 0;
                p = 0;
                while (1) {
                  m = +u[r + (p << 2) >> 2];
                  if ((p | 0) == 0) {
                    w = m
                  } else {
                    w = m - +u[r + (p - 1 << 2) >> 2]
                  }
                  if ((p | 0) == (l | 0)) {
                    b = 3.141592653589793 - m;
                    E = t
                  } else {
                    S = p + 1 | 0;
                    b = +u[r + (S << 2) >> 2] - m;
                    E = S
                  }
                  u[a + (p << 2) >> 2] = 10.0 / ((b < w ? b : w) + .04);
                  if ((E | 0) < (t | 0)) {
                    p = E
                  } else {
                    break
                  }
                }
                if (s) {
                  v = 0
                } else {
                  c = 0;
                  d = 999999986991104.0;
                  _ = 0;
                  h = 1411;
                  break
                }
                do {
                  p = r + (v << 2) | 0;
                  u[p >> 2] = +u[p >> 2] - (+ (v | 0) * .3125 + .75);
                  v = v + 1 | 0
                } while ((v | 0) < (t | 0));
                if (s) {
                  k = 0
                } else {
                  c = 0;
                  d = 999999986991104.0;
                  _ = 0;
                  h = 1411;
                  break
                }
                do {
                  p = r + (k << 2) | 0;
                  u[p >> 2] = +u[p >> 2] * 256.0;
                  k = k + 1 | 0
                } while ((k | 0) < (t | 0));
                if (s) {
                  g = 0;
                  y = 999999986991104.0;
                  M = 0;
                  F = 3920
                } else {
                  c = 0;
                  d = 999999986991104.0;
                  _ = 0;
                  h = 1411;
                  break
                }
                while (1) {
                  p = 0;
                  m = 0.0;
                  l = F;
                  while (1) {
                    A = +u[r + (p << 2) >> 2] - +(n[l] | 0);
                    T = m + A * A;
                    S = p + 1 | 0;
                    if ((S | 0) < (t | 0)) {
                      p = S;
                      m = T;
                      l = l + 1 | 0
                    } else {
                      break
                    }
                  }
                  l = T < y;
                  p = l ? g : M;
                  S = g + 1 | 0;
                  if ((S | 0) < 64) {
                    g = S;
                    y = l ? T : y;
                    M = p;
                    F = F + t | 0
                  } else {
                    O = p;
                    break
                  }
                }
              } else {
                c = 0;
                d = 999999986991104.0;
                _ = 0;
                h = 1411
              }
            } while (0);
            if ((h | 0) == 1411) {
              while (1) {
                h = 0;
                F = d > 0.0;
                M = F ? c : _;
                g = c + 1 | 0;
                if ((g | 0) < 64) {
                  c = g;
                  d = F ? 0.0 : d;
                  _ = M;
                  h = 1411
                } else {
                  O = M;
                  break
                }
              }
            }
            do {
              if (s) {
                _ = re(O, t) | 0;
                c = 0;
                do {
                  M = r + (c << 2) | 0;
                  u[M >> 2] = +u[M >> 2] - +(n[3920 + (c + _) | 0] | 0);
                  c = c + 1 | 0
                } while ((c | 0) < (t | 0));
                kr(i, O, 6);
                if (s) {
                  R = 0
                } else {
                  C = 0;
                  N = 999999986991104.0;
                  P = 0;
                  h = 1422;
                  break
                }
                do {
                  c = r + (R << 2) | 0;
                  u[c >> 2] = +u[c >> 2] * 2.0;
                  R = R + 1 | 0
                } while ((R | 0) < (t | 0));
                if (s) {
                  x = 0;
                  D = 999999986991104.0;
                  I = 0;
                  L = 3408
                } else {
                  C = 0;
                  N = 999999986991104.0;
                  P = 0;
                  h = 1422;
                  break
                }
                while (1) {
                  c = 0;
                  d = 0.0;
                  _ = L;
                  while (1) {
                    y = +u[r + (c << 2) >> 2] - +(n[_] | 0);
                    B = d + +u[a + (c << 2) >> 2] * y * y;
                    M = c + 1 | 0;
                    if ((M | 0) < (t | 0)) {
                      c = M;
                      d = B;
                      _ = _ + 1 | 0
                    } else {
                      break
                    }
                  }
                  _ = B < D;
                  c = _ ? x : I;
                  M = x + 1 | 0;
                  if ((M | 0) < 64) {
                    x = M;
                    D = _ ? B : D;
                    I = c;
                    L = L + t | 0
                  } else {
                    U = c;
                    break
                  }
                }
              } else {
                kr(i, O, 6);
                C = 0;
                N = 999999986991104.0;
                P = 0;
                h = 1422
              }
            } while (0);
            if ((h | 0) == 1422) {
              while (1) {
                h = 0;
                O = N > 0.0;
                L = O ? C : P;
                I = C + 1 | 0;
                if ((I | 0) < 64) {
                  C = I;
                  N = O ? 0.0 : N;
                  P = L;
                  h = 1422
                } else {
                  U = L;
                  break
                }
              }
            }
            if (!s) {
              kr(i, U, 6);
              f = o;
              return
            }
            h = re(U, t) | 0;
            P = 0;
            do {
              C = r + (P << 2) | 0;
              u[C >> 2] = +u[C >> 2] - +(n[3408 + (P + h) | 0] | 0);
              P = P + 1 | 0
            } while ((P | 0) < (t | 0));
            kr(i, U, 6);
            if (s) {
              q = 0
            } else {
              f = o;
              return
            }
            do {
              U = r + (q << 2) | 0;
              u[U >> 2] = +u[U >> 2] * .0019531;
              q = q + 1 | 0
            } while ((q | 0) < (t | 0));
            if (s) {
              H = 0
            } else {
              f = o;
              return
            }
            do {
              s = r + (H << 2) | 0;
              u[s >> 2] = +u[e + (H << 2) >> 2] - +u[s >> 2];
              H = H + 1 | 0
            } while ((H | 0) < (t | 0));
            f = o;
            return
          }
          function Rt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var i = 0,
              o = 0,
              a = 0,
              s = 0;
            i = (r | 0) > 0;
            do {
              if (i) {
                o = 0;
                do {
                  u[e + (o << 2) >> 2] = +(o | 0) * .3125 + .75;
                  o = o + 1 | 0
                } while ((o | 0) < (r | 0));
                o = yr(t, 6) | 0;
                if (!i) {
                  break
                }
                a = re(o, r) | 0;
                o = 0;
                do {
                  s = e + (o << 2) | 0;
                  u[s >> 2] = +u[s >> 2] + +(n[3920 + (o + a) | 0] | 0) * .0039062;
                  o = o + 1 | 0
                } while ((o | 0) < (r | 0));
                o = yr(t, 6) | 0;
                if (!i) {
                  return
                }
                a = re(o, r) | 0;
                o = 0;
                do {
                  s = e + (o << 2) | 0;
                  u[s >> 2] = +u[s >> 2] + +(n[3408 + (o + a) | 0] | 0) * .0019531;
                  o = o + 1 | 0
                } while ((o | 0) < (r | 0));
                return
              } else {
                yr(t, 6) | 0
              }
            } while (0);
            yr(t, 6) | 0;
            return
          }
          function Ct(e) {
            e = e | 0;
            var r = 0,
              t = 0,
              n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0;
            r = f;
            f = f + 8 | 0;
            t = r | 0;
            n = Cn(172, 1) | 0;
            if ((n | 0) == 0) {
              i = 0;
              f = r;
              return i | 0
            }
            o[n >> 2] = e;
            a = o[e >> 2] | 0;
            e = qt(o[a >> 2] | 0) | 0;
            s = n + 4 | 0;
            o[s >> 2] = e;
            o[n + 48 >> 2] = 0;
            l = a + 4 | 0;
            o[n + 8 >> 2] = o[l >> 2] << 1;
            c = o[l >> 2] | 0;
            d = n + 12 | 0;
            o[d >> 2] = c;
            _ = a + 8 | 0;
            h = o[_ >> 2] | 0;
            o[n + 16 >> 2] = h;
            p = n + 20 | 0;
            o[p >> 2] = (o[l >> 2] | 0) / (o[_ >> 2] | 0) | 0;
            _ = n + 24 | 0;
            o[_ >> 2] = h + c;
            c = n + 28 | 0;
            o[c >> 2] = o[a + 12 >> 2];
            o[n + 148 >> 2] = 1;
            o[n + 152 >> 2] = a + 32;
            h = o[a + 64 >> 2] | 0;
            o[n + 156 >> 2] = h;
            o[n + 160 >> 2] = h;
            o[t >> 2] = 9;
            h = t;
            Wt(e, 4, h) | 0;
            o[t >> 2] = 1;
            Wt(o[s >> 2] | 0, 105, h) | 0;
            u[n + 36 >> 2] = +u[a + 24 >> 2];
            u[n + 40 >> 2] = +u[a + 16 >> 2];
            u[n + 44 >> 2] = +u[a + 20 >> 2];
            o[n + 32 >> 2] = 1;
            o[n + 52 >> 2] = Cn((o[_ >> 2] | 0) - (o[d >> 2] | 0) << 2, 1) | 0;
            o[n + 56 >> 2] = Cn(256, 1) | 0;
            o[n + 60 >> 2] = Cn(256, 1) | 0;
            o[n + 64 >> 2] = 2432;
            o[n + 68 >> 2] = 3232;
            d = o[c >> 2] | 0;
            _ = d << 2;
            a = Cn(_, 1) | 0;
            h = n + 72 | 0;
            o[h >> 2] = a;
            o[n + 76 >> 2] = Cn(_, 1) | 0;
            o[n + 80 >> 2] = Cn(_, 1) | 0;
            t = o[p >> 2] << 2;
            o[n + 96 >> 2] = Cn(t, 1) | 0;
            o[n + 100 >> 2] = Cn(t, 1) | 0;
            o[n + 104 >> 2] = 0;
            o[n + 84 >> 2] = Cn(_, 1) | 0;
            o[n + 88 >> 2] = Cn(_, 1) | 0;
            o[n + 92 >> 2] = Cn(_, 1) | 0;
            e: do {
              if ((d | 0) > 0) {
                _ = 0;
                t = d;
                p = a;
                while (1) {
                  e = _ + 1 | 0;
                  u[p + (_ << 2) >> 2] = +(e | 0) * 3.1415927410125732 / +(t + 1 | 0);
                  l = o[c >> 2] | 0;
                  if ((e | 0) >= (l | 0)) {
                    break e
                  }
                  _ = e;
                  t = l;
                  p = o[h >> 2] | 0
                }
              }
            } while (0);
            u[n + 108 >> 2] = 8.0;
            o[n + 112 >> 2] = 0;
            o[n + 116 >> 2] = 0;
            o[n + 120 >> 2] = 2e4;
            o[n + 140 >> 2] = 0;
            o[n + 124 >> 2] = 0;
            u[n + 144 >> 2] = 0.0;
            o[n + 164 >> 2] = 2;
            h = n + 168 | 0;
            c = h;
            Wt(o[s >> 2] | 0, 25, h) | 0;
            o[c >> 2] = o[c >> 2] << 1;
            i = n;
            f = r;
            return i | 0
          }
          function Nt(e) {
            e = e | 0;
            zt(o[e + 4 >> 2] | 0);
            Rn(o[e + 52 >> 2] | 0);
            Rn(o[e + 56 >> 2] | 0);
            Rn(o[e + 60 >> 2] | 0);
            Rn(o[e + 72 >> 2] | 0);
            Rn(o[e + 76 >> 2] | 0);
            Rn(o[e + 80 >> 2] | 0);
            Rn(o[e + 96 >> 2] | 0);
            Rn(o[e + 100 >> 2] | 0);
            Rn(o[e + 84 >> 2] | 0);
            Rn(o[e + 88 >> 2] | 0);
            Rn(o[e + 92 >> 2] | 0);
            Rn(e);
            return
          }
          function Pt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0.0,
              b = 0.0,
              E = 0,
              S = 0.0,
              v = 0,
              k = 0,
              g = 0,
              y = 0,
              M = 0,
              F = 0,
              A = 0,
              T = 0,
              O = 0,
              R = 0,
              C = 0,
              N = 0,
              P = 0,
              x = 0,
              D = 0,
              I = 0,
              L = 0,
              B = 0,
              U = 0,
              q = 0,
              z = 0,
              V = 0,
              j = 0.0,
              X = 0.0,
              K = 0.0,
              Y = 0,
              W = 0.0,
              G = 0,
              Q = 0,
              Z = 0,
              J = 0,
              ee = 0,
              te = 0,
              ne = 0,
              ie = 0,
              oe = 0,
              ae = 0,
              se = 0,
              le = 0,
              ue = 0,
              ce = 0,
              fe = 0,
              de = 0,
              _e = 0,
              he = 0,
              pe = 0.0,
              me = 0,
              we = 0.0,
              be = 0.0,
              Ee = 0,
              Se = 0,
              ve = 0,
              ke = 0,
              ge = 0,
              ye = 0,
              Me = 0,
              Fe = 0,
              Ae = 0,
              Te = 0;
            n = f;
            f = f + 24 | 0;
            i = n | 0;
            a = n + 8 | 0;
            s = n + 16 | 0;
            l = r;
            r = o[e + 48 >> 2] | 0;
            c = o[o[e >> 2] >> 2] | 0;
            d = e + 12 | 0;
            _ = o[d >> 2] | 0;
            h = l + (_ << 2) | 0;
            p = e + 8 | 0;
            Gr(l, 5776, l, h, o[p >> 2] | 0, 64, o[e + 56 >> 2] | 0, r);
            m = e + 112 | 0;
            if ((o[m >> 2] | 0) == 0) {
              if ((o[e + 140 >> 2] | 0) == 0) {
                w = 1.0;
                b = 1.0
              } else {
                E = 1458
              }
            } else {
              E = 1458
            }
            if ((E | 0) == 1458) {
              S = +zr(l, o[d >> 2] | 0);
              w = S + 1.0;
              b = +zr(h, o[d >> 2] | 0) + 1.0
            }
            h = e + 20 | 0;
            v = f;
            f = f + ((o[h >> 2] | 0) * 4 | 0) | 0;
            f = f + 7 & -8;
            k = e + 4 | 0;
            Wt(o[k >> 2] | 0, 104, v) | 0;
            jt(o[k >> 2] | 0, l, t) | 0;
            g = e + 24 | 0;
            y = (o[g >> 2] | 0) - (o[d >> 2] | 0) | 0;
            M = _ - y | 0;
            _ = l + (M << 2) | 0;
            F = _;
            A = e + 52 | 0;
            T = o[A >> 2] | 0;
            O = y << 2;
            Gn(F | 0, T | 0, O) | 0;
            O = o[A >> 2] | 0;
            A = o[d >> 2] | 0;
            T = l + (A + M << 2) | 0;
            F = (o[g >> 2] | 0) - A << 2;
            Gn(O | 0, T | 0, F) | 0;
            F = o[h >> 2] | 0;
            T = f;
            f = f + (F * 4 | 0) | 0;
            f = f + 7 & -8;
            O = f;
            f = f + (F * 4 | 0) | 0;
            f = f + 7 & -8;
            Wt(o[k >> 2] | 0, 100, T) | 0;
            Wt(o[k >> 2] | 0, 101, O) | 0;
            Wt(o[k >> 2] | 0, 9, i) | 0;
            o[i >> 2] = (o[i >> 2] | 0) == 0;
            F = e + 28 | 0;
            A = o[F >> 2] | 0;
            y = f;
            f = f + (A * 4 | 0) | 0;
            f = f + 7 & -8;
            R = f;
            f = f + (A * 4 | 0) | 0;
            f = f + 7 & -8;
            C = f;
            f = f + (A * 4 | 0) | 0;
            f = f + 7 & -8;
            N = f;
            f = f + (A * 4 | 0) | 0;
            f = f + 7 & -8;
            P = f;
            f = f + (A * 4 | 0) | 0;
            f = f + 7 & -8;
            x = f;
            f = f + (A * 4 | 0) | 0;
            f = f + 7 & -8;
            D = f;
            f = f + (A * 4 | 0) | 0;
            f = f + 7 & -8;
            I = f;
            f = f + (A * 4 | 0) | 0;
            f = f + 7 & -8;
            L = ze() | 0;
            B = f;
            f = f + ((A + 1 | 0) * 4 | 0) | 0;
            f = f + 7 & -8;
            A = o[g >> 2] | 0;
            g = f;
            f = f + (A * 4 | 0) | 0;
            f = f + 7 & -8;
            U = e + 16 | 0;
            q = (A | 0) > 0;
            do {
              if ((o[U >> 2] | 0) == 80) {
                if (!q) {
                  break
                }
                z = o[e + 64 >> 2] | 0;
                V = 0;
                do {
                  u[g + (V << 2) >> 2] = +u[l + (V + M << 2) >> 2] * +u[z + (V >> 1 << 2) >> 2];
                  V = V + 1 | 0
                } while ((V | 0) < (A | 0))
              } else {
                if (!q) {
                  break
                }
                V = o[e + 64 >> 2] | 0;
                z = 0;
                do {
                  u[g + (z << 2) >> 2] = +u[l + (z + M << 2) >> 2] * +u[V + (z << 2) >> 2];
                  z = z + 1 | 0
                } while ((z | 0) < (A | 0))
              }
            } while (0);
            et(g, B, (o[F >> 2] | 0) + 1 | 0, A);
            S = +u[B >> 2];
            j = S + S * +u[e + 36 >> 2];
            u[B >> 2] = j;
            A = o[F >> 2] | 0;
            g = A + 1 | 0;
            e: do {
              if ((g | 0) > 0) {
                q = o[e + 68 >> 2] | 0;
                z = 0;
                S = j;
                while (1) {
                  u[B + (z << 2) >> 2] = S * +u[q + (z << 2) >> 2];
                  V = z + 1 | 0;
                  if ((V | 0) >= (g | 0)) {
                    break e
                  }
                  z = V;
                  S = +u[B + (V << 2) >> 2]
                }
              }
            } while (0); + $r(y, B, A);
            Be(L | 0);
            L = rt(y, o[F >> 2] | 0, P, 10, .20000000298023224, r) | 0;
            A = o[F >> 2] | 0;
            do {
              if ((L | 0) != (A | 0)) {
                B = rt(y, A, P, 10, .05000000074505806, r) | 0;
                g = o[F >> 2] | 0;
                if (!((B | 0) != (g | 0) & (g | 0) > 0)) {
                  break
                }
                B = o[e + 72 >> 2] | 0;
                z = 0;
                do {
                  u[P + (z << 2) >> 2] = +u[B + (z << 2) >> 2];
                  z = z + 1 | 0
                } while ((z | 0) < (g | 0))
              }
            } while (0);
            if ((o[m >> 2] | 0) == 0) {
              if ((o[e + 140 >> 2] | 0) != 0) {
                E = 1476
              }
            } else {
              E = 1476
            }
            do {
              if ((E | 0) == 1476) {
                if ((o[i >> 2] | 0) != 0) {
                  break
                }
                A = e + 124 | 0;
                do {
                  if ((o[A >> 2] | 0) != 0) {
                    j = +u[e + 128 >> 2];
                    do {
                      if (+ u[e + 132 >> 2] * j > 0.0) {
                        S = j * -1.0e-5 / (+ u[e + 136 >> 2] + 1.0);
                        X = S > .1 ? .10000000149011612 : S;
                        if (X >= -.1) {
                          K = X;
                          break
                        }
                        K = -.10000000149011612
                      } else {
                        K = 0.0
                      }
                    } while (0);
                    y = e + 108 | 0;
                    j = K + +u[y >> 2];
                    X = j > 10.0 ? 10.0 : j;
                    u[y >> 2] = X;
                    if (X >= 0.0) {
                      break
                    }
                    u[y >> 2] = 0.0
                  }
                } while (0);
                X = +$(b / w) * 2.0;
                y = o[k >> 2] | 0;
                L = e + 144 | 0;
                g = L;
                Wt(y, 29, L) | 0;
                j = X < -4.0 ? -4.0 : X;
                if ((o[m >> 2] | 0) == 0) {
                  if (+ u[g >> 2] < 2.0) {
                    Y = 1
                  } else {
                    Y = o[e + 160 >> 2] | 0
                  }
                  o[e + 156 >> 2] = Y;
                  break
                }
                L = (o[c + 160 >> 2] | 0) - 1 | 0;
                o[a >> 2] = L;
                X = (j > 2.0 ? 2.0 : j) + 2.0 + +u[g >> 2];
                j = X < -1.0 ? -1.0 : X;
                u[g >> 2] = j;
                g = e + 168 | 0;
                e: do {
                  if ((L | 0) != 0) {
                    y = c + 156 | 0;
                    z = e + 152 | 0;
                    B = e + 120 | 0;
                    X = +u[e + 108 >> 2];
                    q = L;
                    do {
                      V = ~~ + H(X);
                      if ((V | 0) == 10) {
                        W = +u[(o[y >> 2] | 0) + (q * 44 | 0) + 40 >> 2]
                      } else {
                        G = V + 1 | 0;
                        Q = o[y >> 2] | 0;
                        W = (X - +(V | 0)) * +u[Q + (q * 44 | 0) + (G << 2) >> 2] + (+ (G | 0) - X) * +u[Q + (q * 44 | 0) + (V << 2) >> 2]
                      }
                      if (j >= W) {
                        V = re(o[(o[(o[z >> 2] | 0) + (q << 2) >> 2] | 0) + 52 >> 2] | 0, o[g >> 2] | 0) | 0;
                        if (((V | 0) / (o[p >> 2] | 0) | 0 | 0) <= (o[B >> 2] | 0)) {
                          break e
                        }
                      }
                      q = q - 1 | 0;
                      o[a >> 2] = q
                    } while ((q | 0) != 0)
                  }
                } while (0);
                g = a;
                Wt(e, 10, g) | 0;
                if ((o[A >> 2] | 0) == 0) {
                  break
                }
                g = s;
                Wt(e, 19, g) | 0;
                g = (o[s >> 2] | 0) - (o[A >> 2] | 0) | 0;
                L = e + 128 | 0;
                u[L >> 2] = +u[L >> 2] + +(g | 0);
                L = e + 132 | 0;
                u[L >> 2] = +u[L >> 2] * .95 + +(g | 0) * .05;
                g = e + 136 | 0;
                u[g >> 2] = +u[g >> 2] + 1.0
              }
            } while (0);
            do {
              if ((o[e + 148 >> 2] | 0) != 0) {
                kr(t, 1, 1);
                if ((o[i >> 2] | 0) == 0) {
                  kr(t, o[e + 156 >> 2] | 0, 3);
                  break
                } else {
                  kr(t, 0, 3);
                  break
                }
              }
            } while (0);
            do {
              if ((o[i >> 2] | 0) == 0) {
                s = e + 156 | 0;
                a = e + 152 | 0;
                p = o[(o[a >> 2] | 0) + (o[s >> 2] << 2) >> 2] | 0;
                if ((p | 0) == 0) {
                  break
                }
                Ci[o[p + 16 >> 2] & 7](P, x, o[F >> 2] | 0, t);
                p = e + 32 | 0;
                c = o[F >> 2] | 0;
                do {
                  if ((o[p >> 2] | 0) != 0 & (c | 0) > 0) {
                    Y = e + 72 | 0;
                    m = 0;
                    do {
                      u[(o[Y >> 2] | 0) + (m << 2) >> 2] = +u[P + (m << 2) >> 2];
                      m = m + 1 | 0;
                      Z = o[F >> 2] | 0
                    } while ((m | 0) < (Z | 0));
                    if ((Z | 0) <= 0) {
                      J = Z;
                      break
                    }
                    m = e + 76 | 0;
                    Y = 0;
                    while (1) {
                      u[(o[m >> 2] | 0) + (Y << 2) >> 2] = +u[x + (Y << 2) >> 2];
                      k = Y + 1 | 0;
                      E = o[F >> 2] | 0;
                      if ((k | 0) < (E | 0)) {
                        Y = k
                      } else {
                        J = E;
                        break
                      }
                    }
                  } else {
                    J = c
                  }
                } while (0);
                c = f;
                f = f + (J * 4 | 0) | 0;
                f = f + 7 & -8;
                A = o[U >> 2] | 0;
                Y = f;
                f = f + (A * 4 | 0) | 0;
                f = f + 7 & -8;
                m = f;
                f = f + (A * 4 | 0) | 0;
                f = f + 7 & -8;
                E = m;
                k = f;
                f = f + (A * 4 | 0) | 0;
                f = f + 7 & -8;
                if ((o[h >> 2] | 0) > 0) {
                  g = e + 72 | 0;
                  L = e + 76 | 0;
                  q = e + 80 | 0;
                  B = e + 40 | 0;
                  z = e + 44 | 0;
                  y = e + 96 | 0;
                  V = e + 88 | 0;
                  Q = e + 104 | 0;
                  G = e + 100 | 0;
                  ee = e + 164 | 0;
                  te = e + 92 | 0;
                  ne = e + 84 | 0;
                  ie = 0;
                  oe = A;
                  while (1) {
                    A = l + ((re(oe, ie) | 0) + M << 2) | 0;
                    ae = ze() | 0;
                    se = f;
                    f = f + (oe * 4 | 0) | 0;
                    f = f + 7 & -8;
                    le = se;
                    ue = o[U >> 2] | 0;
                    ce = f;
                    f = f + (ue * 4 | 0) | 0;
                    f = f + 7 & -8;
                    fe = f;
                    f = f + (ue * 4 | 0) | 0;
                    f = f + 7 & -8;
                    it(o[g >> 2] | 0, P, D, o[F >> 2] | 0, ie, o[h >> 2] | 0);
                    it(o[L >> 2] | 0, x, I, o[F >> 2] | 0, ie, o[h >> 2] | 0);
                    nt(D, o[F >> 2] | 0, .05000000074505806);
                    nt(I, o[F >> 2] | 0, .05000000074505806);
                    tt(D, R, o[F >> 2] | 0, r);
                    tt(I, o[q >> 2] | 0, o[F >> 2] | 0, r);
                    Ir(+ u[B >> 2], R, C, o[F >> 2] | 0);
                    Ir(+ u[z >> 2], R, N, o[F >> 2] | 0);
                    u[(o[y >> 2] | 0) + (ie << 2) >> 2] = 1.0;
                    ue = o[F >> 2] | 0;
                    if ((ue | 0) > 0) {
                      W = 1.0;
                      de = 0;
                      do {
                        _e = o[q >> 2] | 0;
                        w = +u[_e + ((de | 1) << 2) >> 2];
                        b = +u[_e + (de << 2) >> 2];
                        W = W + (w - b);
                        _e = (o[y >> 2] | 0) + (ie << 2) | 0;
                        u[_e >> 2] = w + b + +u[_e >> 2];
                        de = de + 2 | 0;
                        he = o[F >> 2] | 0
                      } while ((de | 0) < (he | 0));
                      pe = W + .01;
                      me = he
                    } else {
                      pe = 1.01;
                      me = ue
                    }
                    b = (+ u[T + (ie << 2) >> 2] + .01) / pe;
                    Xr(A, o[q >> 2] | 0, se, o[U >> 2] | 0, me, o[V >> 2] | 0, r);
                    w = +zr(se, o[U >> 2] | 0);
                    if ((o[(o[(o[a >> 2] | 0) + (o[s >> 2] << 2) >> 2] | 0) + 36 >> 2] | 0) == 0) {
                      de = Mn(b * w / (+ u[v + (ie << 2) >> 2] + 1.0), 6736, 32) | 0;
                      _e = (de | 0) < 0 ? 0 : de;
                      kr(t, (_e | 0) > 31 ? 31 : _e, 5);
                      _e = o[Q >> 2] | 0;
                      if ((_e | 0) != 0) {
                        u[_e + (ie << 2) >> 2] = w
                      }
                      u[(o[G >> 2] | 0) + (ie << 2) >> 2] = w
                    } else {
                      K = +u[O + (ie << 2) >> 2] + 1.0;
                      j = b * (w + 1.0) / K;
                      if ((o[U >> 2] | 0) == 80) {
                        we = j * .7071099877357483
                      } else {
                        we = j
                      }
                      _e = Mn(we, 6032, 16) | 0;
                      kr(t, _e, 4);
                      j = +u[6032 + (_e << 2) >> 2] * .8736;
                      _e = o[U >> 2] | 0;
                      if ((_e | 0) == 80) {
                        be = j * 1.414199948310852
                      } else {
                        be = j
                      }
                      j = K * (be / b);
                      Wr(o[q >> 2] | 0, C, N, Y, _e, o[F >> 2] | 0, r);
                      _e = o[U >> 2] | 0;
                      if ((_e | 0) > 0) {
                        de = 0;
                        do {
                          u[ce + (de << 2) >> 2] = 1.0000000036274937e-15;
                          de = de + 1 | 0
                        } while ((de | 0) < (_e | 0))
                      }
                      de = o[F >> 2] | 0;
                      if ((de | 0) > 0) {
                        ue = o[ne >> 2] | 0;
                        Ee = 0;
                        do {
                          u[c + (Ee << 2) >> 2] = +u[ue + (Ee << 2) >> 2];
                          Ee = Ee + 1 | 0
                        } while ((Ee | 0) < (de | 0))
                      }
                      jr(ce, o[q >> 2] | 0, ce, _e, de, c, r);
                      Ee = o[F >> 2] | 0;
                      if ((Ee | 0) > 0) {
                        ue = o[te >> 2] | 0;
                        Se = 0;
                        do {
                          u[c + (Se << 2) >> 2] = +u[ue + (Se << 2) >> 2];
                          Se = Se + 1 | 0
                        } while ((Se | 0) < (Ee | 0))
                      }
                      Vr(ce, C, N, ce, o[U >> 2] | 0, Ee, c, r);
                      Se = o[F >> 2] | 0;
                      if ((Se | 0) > 0) {
                        ue = o[te >> 2] | 0;
                        de = 0;
                        do {
                          u[c + (de << 2) >> 2] = +u[ue + (de << 2) >> 2];
                          de = de + 1 | 0
                        } while ((de | 0) < (Se | 0))
                      }
                      Vr(A, C, N, fe, o[U >> 2] | 0, Se, c, r);
                      de = o[U >> 2] | 0;
                      if ((de | 0) > 0) {
                        ue = 0;
                        do {
                          u[k + (ue << 2) >> 2] = +u[fe + (ue << 2) >> 2] - +u[ce + (ue << 2) >> 2];
                          ue = ue + 1 | 0
                        } while ((ue | 0) < (de | 0))
                      }
                      qr(k, k, j, de);
                      ue = o[U >> 2] | 0;
                      Jn(E | 0, 0, ue << 2 | 0);
                      ce = o[(o[a >> 2] | 0) + (o[s >> 2] << 2) >> 2] | 0;
                      vi[o[ce + 36 >> 2] & 7](k, o[q >> 2] | 0, C, N, o[ce + 44 >> 2] | 0, o[F >> 2] | 0, ue, m, Y, t, r, o[ee >> 2] | 0, o[ce + 12 >> 2] | 0);
                      Ur(m, m, j, o[U >> 2] | 0);
                      if ((o[(o[(o[a >> 2] | 0) + (o[s >> 2] << 2) >> 2] | 0) + 12 >> 2] | 0) != 0) {
                        ce = o[U >> 2] | 0;
                        ue = ze() | 0;
                        Se = f;
                        f = f + (ce * 4 | 0) | 0;
                        f = f + 7 & -8;
                        ce = o[U >> 2] | 0;
                        Jn(Se | 0, 0, ce << 2 | 0);
                        if ((ce | 0) > 0) {
                          Ee = 0;
                          do {
                            _e = k + (Ee << 2) | 0;
                            u[_e >> 2] = +u[_e >> 2] * 2.5;
                            Ee = Ee + 1 | 0
                          } while ((Ee | 0) < (ce | 0))
                        }
                        Ee = o[(o[a >> 2] | 0) + (o[s >> 2] << 2) >> 2] | 0;
                        vi[o[Ee + 36 >> 2] & 7](k, o[q >> 2] | 0, C, N, o[Ee + 44 >> 2] | 0, o[F >> 2] | 0, ce, Se, Y, t, r, o[ee >> 2] | 0, 0);
                        Ur(Se, Se, j * .4000000059604645, o[U >> 2] | 0);
                        Ee = o[U >> 2] | 0;
                        if ((Ee | 0) > 0) {
                          de = 0;
                          do {
                            _e = m + (de << 2) | 0;
                            u[_e >> 2] = +u[_e >> 2] + +u[Se + (de << 2) >> 2];
                            de = de + 1 | 0
                          } while ((de | 0) < (Ee | 0))
                        }
                        Be(ue | 0)
                      }
                      Ee = o[U >> 2] | 0;
                      if ((Ee | 0) > 0) {
                        de = (Ee | 0) > 1 ? Ee << 2 : 4;
                        Gn(le | 0, E | 0, de) | 0
                      }
                      if ((o[Q >> 2] | 0) == 0) {
                        ve = Ee
                      } else {
                        j = +Hr(m, Ee) * .7071099877357483;
                        u[(o[Q >> 2] | 0) + (ie << 2) >> 2] = j;
                        ve = o[U >> 2] | 0
                      }
                      j = +zr(se, ve);
                      u[(o[G >> 2] | 0) + (ie << 2) >> 2] = j
                    }
                    Ee = o[F >> 2] | 0;
                    de = o[ne >> 2] | 0;
                    if ((Ee | 0) > 0) {
                      Se = 0;
                      do {
                        u[c + (Se << 2) >> 2] = +u[de + (Se << 2) >> 2];
                        Se = Se + 1 | 0
                      } while ((Se | 0) < (Ee | 0))
                    }
                    jr(se, o[q >> 2] | 0, A, o[U >> 2] | 0, Ee, de, r);
                    Vr(A, C, N, fe, o[U >> 2] | 0, o[F >> 2] | 0, o[te >> 2] | 0, r);
                    Be(ae | 0);
                    Se = ie + 1 | 0;
                    if ((Se | 0) >= (o[h >> 2] | 0)) {
                      break
                    }
                    ie = Se;
                    oe = o[U >> 2] | 0
                  }
                  ke = o[F >> 2] | 0
                } else {
                  ke = J
                }
                do {
                  if ((ke | 0) > 0) {
                    oe = e + 72 | 0;
                    ie = 0;
                    do {
                      u[(o[oe >> 2] | 0) + (ie << 2) >> 2] = +u[P + (ie << 2) >> 2];
                      ie = ie + 1 | 0;
                      ge = o[F >> 2] | 0
                    } while ((ie | 0) < (ge | 0));
                    if ((ge | 0) <= 0) {
                      break
                    }
                    ie = e + 76 | 0;
                    oe = 0;
                    do {
                      u[(o[ie >> 2] | 0) + (oe << 2) >> 2] = +u[x + (oe << 2) >> 2];
                      oe = oe + 1 | 0
                    } while ((oe | 0) < (o[F >> 2] | 0))
                  }
                } while (0);
                o[p >> 2] = 0;
                ye = 1;
                f = n;
                return ye | 0
              }
            } while (0);
            x = o[d >> 2] | 0;
            if ((x | 0) > 0) {
              ge = 0;
              while (1) {
                u[l + (ge + M << 2) >> 2] = 1.0000000036274937e-15;
                P = ge + 1 | 0;
                ke = o[d >> 2] | 0;
                if ((P | 0) < (ke | 0)) {
                  ge = P
                } else {
                  Me = ke;
                  break
                }
              }
            } else {
              Me = x
            }
            x = o[F >> 2] | 0;
            if ((x | 0) > 0) {
              ge = e + 92 | 0;
              M = 0;
              do {
                u[(o[ge >> 2] | 0) + (M << 2) >> 2] = 0.0;
                M = M + 1 | 0;
                Fe = o[F >> 2] | 0
              } while ((M | 0) < (Fe | 0));
              Ae = o[d >> 2] | 0;
              Te = Fe
            } else {
              Ae = Me;
              Te = x
            }
            o[e + 32 >> 2] = 1;
            jr(_, o[e + 80 >> 2] | 0, _, Ae, Te, o[e + 84 >> 2] | 0, r);
            ye = (o[i >> 2] | 0) == 0 | 0;
            f = n;
            return ye | 0
          }
          function xt(e) {
            e = e | 0;
            var r = 0,
              t = 0,
              n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              d = 0,
              _ = 0;
            r = f;
            f = f + 8 | 0;
            t = r | 0;
            n = Cn(100, 1) | 0;
            if ((n | 0) == 0) {
              i = 0;
              f = r;
              return i | 0
            }
            o[n >> 2] = e;
            a = o[e >> 2] | 0;
            o[n + 88 >> 2] = 1;
            e = Ht(o[a >> 2] | 0) | 0;
            s = n + 4 | 0;
            o[s >> 2] = e;
            o[n + 40 >> 2] = 0;
            l = a + 4 | 0;
            o[n + 8 >> 2] = o[l >> 2] << 1;
            o[n + 12 >> 2] = o[l >> 2];
            u = a + 8 | 0;
            c = n + 16 | 0;
            o[c >> 2] = o[u >> 2];
            d = n + 20 | 0;
            o[d >> 2] = (o[l >> 2] | 0) / (o[u >> 2] | 0) | 0;
            u = n + 24 | 0;
            o[u >> 2] = o[a + 12 >> 2];
            l = n + 32 | 0;
            _ = l;
            Zt(e, 25, l) | 0;
            o[_ >> 2] = o[_ >> 2] << 1;
            o[t >> 2] = 1;
            Zt(o[s >> 2] | 0, 105, t) | 0;
            o[n + 92 >> 2] = a + 32;
            o[n + 96 >> 2] = o[a + 64 >> 2];
            o[n + 28 >> 2] = 1;
            o[n + 44 >> 2] = Cn(256, 1) | 0;
            o[n + 48 >> 2] = Cn(256, 1) | 0;
            o[n + 52 >> 2] = Cn(o[c >> 2] << 2, 1) | 0;
            c = o[u >> 2] | 0;
            u = c << 2;
            o[n + 56 >> 2] = Cn(u, 1) | 0;
            o[n + 60 >> 2] = Cn(u, 1) | 0;
            u = o[d >> 2] << 2;
            o[n + 68 >> 2] = Cn(u, 1) | 0;
            o[n + 72 >> 2] = Cn(u, 1) | 0;
            o[n + 64 >> 2] = Cn(c << 3, 1) | 0;
            o[n + 76 >> 2] = 0;
            o[n + 36 >> 2] = 0;
            o[n + 84 >> 2] = 1e3;
            i = n;
            f = r;
            return i | 0
          }
          function Dt(e) {
            e = e | 0;
            Vt(o[e + 4 >> 2] | 0);
            Rn(o[e + 44 >> 2] | 0);
            Rn(o[e + 48 >> 2] | 0);
            Rn(o[e + 52 >> 2] | 0);
            Rn(o[e + 56 >> 2] | 0);
            Rn(o[e + 60 >> 2] | 0);
            Rn(o[e + 68 >> 2] | 0);
            Rn(o[e + 72 >> 2] | 0);
            Rn(o[e + 64 >> 2] | 0);
            Rn(e);
            return
          }
          function It(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0,
              y = 0,
              M = 0,
              F = 0,
              A = 0,
              T = 0,
              O = 0,
              R = 0,
              C = 0,
              N = 0,
              P = 0,
              x = 0.0,
              D = 0,
              I = 0,
              L = 0,
              B = 0,
              U = 0,
              q = 0,
              H = 0,
              z = 0,
              j = 0.0,
              X = 0.0,
              K = 0.0,
              Y = 0.0,
              W = 0,
              G = 0.0,
              Q = 0,
              Z = 0,
              $ = 0,
              ee = 0,
              te = 0,
              ne = 0,
              ie = 0.0;
            n = f;
            f = f + 8 | 0;
            i = n | 0;
            a = t;
            t = e;
            s = o[e + 40 >> 2] | 0;
            l = o[o[e >> 2] >> 2] | 0;
            c = e + 12 | 0;
            d = o[c >> 2] | 0;
            _ = e + 4 | 0;
            Zt(o[_ >> 2] | 0, 104, a + (d << 2) | 0) | 0;
            h = Xt(o[_ >> 2] | 0, r, a) | 0;
            Zt(o[_ >> 2] | 0, 103, i) | 0;
            if ((h | 0) != 0) {
              m = h;
              f = n;
              return m | 0
            }
            if ((r | 0) == 0) {
              Lt(t, a, o[i >> 2] | 0, s);
              m = 0;
              f = n;
              return m | 0
            }
            e: do {
              if ((o[e + 88 >> 2] | 0) == 0) {
                w = o[e + 96 >> 2] | 0
              } else {
                do {
                  if ((Tr(r) | 0) > 0) {
                    if ((Fr(r) | 0) == 0) {
                      break
                    }
                    yr(r, 1) | 0;
                    h = yr(r, 3) | 0;
                    o[e + 96 >> 2] = h;
                    if ((h | 0) == 0) {
                      w = 0;
                      break e
                    }
                    if ((o[(o[e + 92 >> 2] | 0) + (h << 2) >> 2] | 0) != 0) {
                      w = h;
                      break e
                    }
                    h = o[p >> 2] | 0;
                    ve(h | 0, 13352, (h = f, f = f + 8 | 0, o[h >> 2] = 12984, h) | 0) | 0;
                    f = h;
                    m = -2;
                    f = n;
                    return m | 0
                  }
                } while (0);
                o[e + 96 >> 2] = 0;
                w = 0
              }
            } while (0);
            h = e + 96 | 0;
            b = e + 92 | 0;
            if ((o[(o[b >> 2] | 0) + (w << 2) >> 2] | 0) == 0) {
              if ((o[i >> 2] | 0) != 0) {
                Lt(t, a, 1, s);
                m = 0;
                f = n;
                return m | 0
              }
              t = o[c >> 2] | 0;
              if ((t | 0) > 0) {
                i = 0;
                w = t;
                while (1) {
                  u[a + (w + i << 2) >> 2] = 1.0000000036274937e-15;
                  E = i + 1 | 0;
                  S = o[c >> 2] | 0;
                  if ((E | 0) < (S | 0)) {
                    i = E;
                    w = S
                  } else {
                    v = S;
                    break
                  }
                }
              } else {
                v = t
              }
              o[e + 28 >> 2] = 1;
              t = a + (v << 2) | 0;
              jr(t, o[e + 60 >> 2] | 0, t, v, o[e + 24 >> 2] | 0, o[e + 64 >> 2] | 0, s);
              Qr(a, a + (o[c >> 2] << 2) | 0, 5776, a, o[e + 8 >> 2] | 0, 64, o[e + 44 >> 2] | 0, o[e + 48 >> 2] | 0, s);
              m = 0;
              f = n;
              return m | 0
            }
            v = e + 20 | 0;
            t = o[v >> 2] | 0;
            w = ze() | 0;
            i = f;
            f = f + (t * 4 | 0) | 0;
            f = f + 7 & -8;
            t = f;
            f = f + ((o[v >> 2] | 0) * 4 | 0) | 0;
            f = f + 7 & -8;
            Zt(o[_ >> 2] | 0, 100, i) | 0;
            Zt(o[_ >> 2] | 0, 101, t) | 0;
            _ = e + 24 | 0;
            S = o[_ >> 2] | 0;
            E = f;
            f = f + (S * 4 | 0) | 0;
            f = f + 7 & -8;
            k = f;
            f = f + (S * 4 | 0) | 0;
            f = f + 7 & -8;
            Ai[o[(o[(o[b >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0) + 20 >> 2] & 7](E, S, r);
            S = e + 28 | 0;
            g = o[_ >> 2] | 0;
            if ((o[S >> 2] | 0) != 0 & (g | 0) > 0) {
              y = e + 56 | 0;
              M = 0;
              while (1) {
                u[(o[y >> 2] | 0) + (M << 2) >> 2] = +u[E + (M << 2) >> 2];
                F = M + 1 | 0;
                A = o[_ >> 2] | 0;
                if ((F | 0) < (A | 0)) {
                  M = F
                } else {
                  T = A;
                  break
                }
              }
            } else {
              T = g
            }
            g = f;
            f = f + (T * 4 | 0) | 0;
            f = f + 7 & -8;
            if ((o[v >> 2] | 0) > 0) {
              T = e + 16 | 0;
              M = e + 76 | 0;
              y = e + 56 | 0;
              A = e + 68 | 0;
              F = l + 28 | 0;
              l = d + 1 | 0;
              O = e + 52 | 0;
              R = e + 60 | 0;
              C = e + 64 | 0;
              N = e + 72 | 0;
              P = e + 84 | 0;
              x = 0.0;
              D = 0;
              while (1) {
                I = o[T >> 2] | 0;
                L = re(I, D) | 0;
                B = a + ((o[c >> 2] | 0) + L << 2) | 0;
                U = ze() | 0;
                q = f;
                f = f + (I * 4 | 0) | 0;
                f = f + 7 & -8;
                I = o[M >> 2] | 0;
                if ((I | 0) == 0) {
                  H = 0
                } else {
                  z = I + (L << 1 << 2) | 0;
                  Jn(z | 0, 0, o[T >> 2] << 3 | 0);
                  H = z
                }
                it(o[y >> 2] | 0, E, k, o[_ >> 2] | 0, D, o[v >> 2] | 0);
                nt(k, o[_ >> 2] | 0, .05000000074505806);
                tt(k, g, o[_ >> 2] | 0, s);
                u[(o[A >> 2] | 0) + (D << 2) >> 2] = 1.0;
                if ((o[_ >> 2] | 0) > 0) {
                  j = 1.0;
                  z = 0;
                  do {
                    X = +u[g + ((z | 1) << 2) >> 2];
                    K = +u[g + (z << 2) >> 2];
                    j = j + (X - K);
                    I = (o[A >> 2] | 0) + (D << 2) | 0;
                    u[I >> 2] = X + K + +u[I >> 2];
                    z = z + 2 | 0
                  } while ((z | 0) < (o[_ >> 2] | 0));
                  Y = j + .01
                } else {
                  Y = 1.01
                }
                K = (+ u[i + (D << 2) >> 2] + .01) / Y;
                Jn(q | 0, 0, o[T >> 2] << 2 | 0);
                do {
                  if ((o[(o[(o[b >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0) + 40 >> 2] | 0) == 0) {
                    X = +J(+ ((yr(r, 5) | 0) - 10 | 0) * .125) / K;
                    z = o[T >> 2] | 0;
                    if ((z | 0) > 0) {
                      W = 0
                    } else {
                      break
                    }
                    do {
                      I = W + L | 0;
                      u[q + (W << 2) >> 2] = X * +u[F >> 2] * +u[a + (I + d << 2) >> 2];
                      u[q + ((W | 1) << 2) >> 2] = -0.0 - X * +u[F >> 2] * +u[a + (l + I << 2) >> 2];
                      W = W + 2 | 0
                    } while ((W | 0) < (z | 0))
                  } else {
                    z = yr(r, 4) | 0;
                    X = +u[6032 + (z << 2) >> 2] * .8736;
                    z = o[T >> 2] | 0;
                    if ((z | 0) == 80) {
                      G = X * 1.414199948310852
                    } else {
                      G = X
                    }
                    X = +u[t + (D << 2) >> 2] * G / K;
                    I = o[(o[b >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0;
                    ki[o[I + 40 >> 2] & 7](q, o[I + 44 >> 2] | 0, z, r, s, P);
                    Ur(q, q, X, o[T >> 2] | 0);
                    if ((o[(o[(o[b >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0) + 12 >> 2] | 0) == 0) {
                      break
                    }
                    z = o[T >> 2] | 0;
                    I = ze() | 0;
                    Q = f;
                    f = f + (z * 4 | 0) | 0;
                    f = f + 7 & -8;
                    z = o[T >> 2] | 0;
                    Jn(Q | 0, 0, z << 2 | 0);
                    Z = o[(o[b >> 2] | 0) + (o[h >> 2] << 2) >> 2] | 0;
                    ki[o[Z + 40 >> 2] & 7](Q, o[Z + 44 >> 2] | 0, z, r, s, P);
                    Ur(Q, Q, X * .4000000059604645, o[T >> 2] | 0);
                    z = o[T >> 2] | 0;
                    if ((z | 0) > 0) {
                      Z = 0;
                      do {
                        $ = q + (Z << 2) | 0;
                        u[$ >> 2] = +u[$ >> 2] + +u[Q + (Z << 2) >> 2];
                        Z = Z + 1 | 0
                      } while ((Z | 0) < (z | 0))
                    }
                    Be(I | 0)
                  }
                } while (0);
                L = o[T >> 2] | 0;
                if ((o[M >> 2] | 0) != 0 & (L | 0) > 0) {
                  z = 0;
                  while (1) {
                    u[H + (z << 1 << 2) >> 2] = +u[q + (z << 2) >> 2];
                    Z = z + 1 | 0;
                    Q = o[T >> 2] | 0;
                    if ((Z | 0) < (Q | 0)) {
                      z = Z
                    } else {
                      ee = Q;
                      break
                    }
                  }
                } else {
                  ee = L
                }
                jr(o[O >> 2] | 0, o[R >> 2] | 0, B, ee, o[_ >> 2] | 0, o[C >> 2] | 0, s);
                z = o[T >> 2] | 0;
                if ((z | 0) > 0) {
                  Q = 0;
                  while (1) {
                    u[(o[O >> 2] | 0) + (Q << 2) >> 2] = +u[q + (Q << 2) >> 2];
                    Z = Q + 1 | 0;
                    $ = o[T >> 2] | 0;
                    if ((Z | 0) < ($ | 0)) {
                      Q = Z
                    } else {
                      te = $;
                      break
                    }
                  }
                } else {
                  te = z
                }
                if ((o[_ >> 2] | 0) > 0) {
                  Q = 0;
                  do {
                    u[(o[R >> 2] | 0) + (Q << 2) >> 2] = +u[g + (Q << 2) >> 2];
                    Q = Q + 1 | 0
                  } while ((Q | 0) < (o[_ >> 2] | 0));
                  ne = o[T >> 2] | 0
                } else {
                  ne = te
                }
                K = +zr(o[O >> 2] | 0, ne);
                u[(o[N >> 2] | 0) + (D << 2) >> 2] = K;
                K = +u[(o[N >> 2] | 0) + (D << 2) >> 2];
                j = x + K * K / +(o[v >> 2] | 0);
                Be(U | 0);
                Q = D + 1 | 0;
                if ((Q | 0) < (o[v >> 2] | 0)) {
                  x = j;
                  D = Q
                } else {
                  ie = j;
                  break
                }
              }
            } else {
              ie = 0.0
            }
            u[e + 80 >> 2] = +V(ie);
            Qr(a, a + (o[c >> 2] << 2) | 0, 5776, a, o[e + 8 >> 2] | 0, 64, o[e + 44 >> 2] | 0, o[e + 48 >> 2] | 0, s);
            if ((o[_ >> 2] | 0) > 0) {
              s = e + 56 | 0;
              e = 0;
              do {
                u[(o[s >> 2] | 0) + (e << 2) >> 2] = +u[E + (e << 2) >> 2];
                e = e + 1 | 0
              } while ((e | 0) < (o[_ >> 2] | 0))
            }
            o[S >> 2] = 0;
            Be(w | 0);
            m = 0;
            f = n;
            return m | 0
          }
          function Lt(e, r, t, n) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            var i = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              f = 0,
              d = 0,
              h = 0.0,
              p = 0,
              m = 0,
              w = 0;
            i = (t | 0) != 0;
            if (i) {
              t = e + 96 | 0;
              a = o[t >> 2] | 0;
              o[t >> 2] = 1;
              o[e + 28 >> 2] = 1;
              s = a
            } else {
              a = o[e + 60 >> 2] | 0;
              Ir(.9900000095367432, a, a, o[e + 24 >> 2] | 0);
              o[e + 28 >> 2] = 1;
              a = e + 80 | 0;
              u[a >> 2] = +u[a >> 2] * .8999999761581421;
              s = 0
            }
            a = e + 12 | 0;
            t = o[a >> 2] | 0;
            if ((t | 0) > 0) {
              l = e + 80 | 0;
              c = e + 84 | 0;
              f = 0;
              d = t;
              while (1) {
                h = +u[l >> 2];
                p = (re(o[c >> 2] | 0, 1664525) | 0) + 1013904223 | 0;
                o[c >> 2] = p;
                u[r + (d + f << 2) >> 2] = h * 3.4642 * ((o[_ >> 2] = p & 8388607 | 1065353216, +u[_ >> 2]) + -1.5);
                p = f + 1 | 0;
                m = o[a >> 2] | 0;
                if ((p | 0) < (m | 0)) {
                  f = p;
                  d = m
                } else {
                  w = m;
                  break
                }
              }
            } else {
              w = t
            }
            t = r + (w << 2) | 0;
            jr(t, o[e + 60 >> 2] | 0, t, w, o[e + 24 >> 2] | 0, o[e + 64 >> 2] | 0, n);
            Qr(r, r + (o[a >> 2] << 2) | 0, 5776, r, o[e + 8 >> 2] | 0, 64, o[e + 44 >> 2] | 0, o[e + 48 >> 2] | 0, n);
            if (!i) {
              return
            }
            o[e + 96 >> 2] = s;
            return
          }
          function Bt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0,
              y = 0.0,
              M = 0.0,
              F = 0,
              A = 0,
              T = 0,
              O = 0,
              R = 0;
            n = f;
            f = f + 80 | 0;
            i = n | 0;
            a = n + 8 | 0;
            s = n + 16 | 0;
            l = n + 24 | 0;
            c = n + 32 | 0;
            d = n + 40 | 0;
            _ = n + 48 | 0;
            h = n + 56 | 0;
            m = n + 64 | 0;
            w = n + 72 | 0;
            switch (r | 0) {
              case 8:
                {
                  Wt(o[e + 4 >> 2] | 0, 8, t) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 35:
                {
                  Wt(o[e + 4 >> 2] | 0, 35, t) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 106:
                {
                  o[t >> 2] = o[e + 48 >> 2];
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 3:
                {
                  o[t >> 2] = o[e + 8 >> 2];
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 34:
                {
                  Wt(o[e + 4 >> 2] | 0, 34, t) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 9:
                {
                  Wt(o[e + 4 >> 2] | 0, 9, t) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 101:
                {
                  E = e + 20 | 0;
                  if ((o[E >> 2] | 0) <= 0) {
                    b = 0;
                    f = n;
                    return b | 0
                  }
                  S = e + 100 | 0;
                  v = t;
                  k = 0;
                  while (1) {
                    u[v + (k << 2) >> 2] = +u[(o[S >> 2] | 0) + (k << 2) >> 2];
                    g = k + 1 | 0;
                    if ((g | 0) < (o[E >> 2] | 0)) {
                      k = g
                    } else {
                      b = 0;
                      break
                    }
                  }
                  f = n;
                  return b | 0
                };
              case 10:
                {
                  k = o[t >> 2] | 0;
                  o[e + 156 >> 2] = k;
                  o[e + 160 >> 2] = k;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 6:
                {
                  Wt(e, 4, t) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 104:
                {
                  o[e + 104 >> 2] = t;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 12:
                {
                  o[e + 112 >> 2] = o[t >> 2];
                  Wt(o[e + 4 >> 2] | 0, 12, t) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 13:
                {
                  o[t >> 2] = o[e + 112 >> 2];
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 30:
                {
                  o[e + 140 >> 2] = o[t >> 2];
                  Wt(o[e + 4 >> 2] | 0, 30, t) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 31:
                {
                  o[t >> 2] = o[e + 140 >> 2];
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 14:
                {
                  k = t;
                  y = +u[k >> 2];
                  M = y + .6;
                  u[a >> 2] = M;
                  u[e + 108 >> 2] = y;
                  if (M > 10.0) {
                    u[a >> 2] = 10.0
                  }
                  E = ~~ + H(+ u[k >> 2] + .5);
                  o[i >> 2] = (E | 0) > 10 ? 10 : E;
                  Wt(o[e + 4 >> 2] | 0, 14, a) | 0;
                  Wt(e, 4, i) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 15:
                {
                  u[t >> 2] = +u[e + 108 >> 2];
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 32:
                {
                  i = t;
                  a = o[i >> 2] | 0;
                  o[e + 124 >> 2] = a;
                  E = e + 112 | 0;
                  k = E;
                  o[k >> 2] = (a | 0) != 0;
                  Wt(o[e + 4 >> 2] | 0, 12, E) | 0;
                  if ((o[k >> 2] | 0) == 0) {
                    b = 0;
                    f = n;
                    return b | 0
                  }
                  o[s >> 2] = 10;
                  k = o[i >> 2] | 0;
                  i = s;
                  E = l;
                  while (1) {
                    Wt(e, 4, i) | 0;
                    Wt(e, 19, E) | 0;
                    a = o[s >> 2] | 0;
                    if ((o[l >> 2] | 0) <= (k | 0)) {
                      F = a;
                      break
                    }
                    S = a - 1 | 0;
                    o[s >> 2] = S;
                    if ((a | 0) <= 0) {
                      F = S;
                      break
                    }
                  }
                  M = +(F | 0);
                  u[c >> 2] = M < 0.0 ? 0.0 : M;
                  Wt(e, 14, c) | 0;
                  u[e + 136 >> 2] = 0.0;
                  u[e + 128 >> 2] = 0.0;
                  u[e + 132 >> 2] = 0.0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 33:
                {
                  o[t >> 2] = o[e + 124 >> 2];
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 4:
                {
                  c = o[t >> 2] | 0;
                  F = (c | 0) < 0 ? 0 : c;
                  c = (F | 0) > 10 ? 10 : F;
                  F = o[e >> 2] | 0;
                  s = o[(o[F >> 2] | 0) + 112 + (c << 2) >> 2] | 0;
                  o[e + 156 >> 2] = s;
                  o[e + 160 >> 2] = s;
                  o[d >> 2] = o[(o[F >> 2] | 0) + 68 + (c << 2) >> 2];
                  Wt(o[e + 4 >> 2] | 0, 6, d) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 16:
                {
                  Wt(o[e + 4 >> 2] | 0, 16, t) | 0;
                  d = o[t >> 2] | 0;
                  c = e + 164 | 0;
                  o[c >> 2] = d;
                  if ((d | 0) >= 1) {
                    b = 0;
                    f = n;
                    return b | 0
                  }
                  o[c >> 2] = 1;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 17:
                {
                  o[t >> 2] = o[e + 164 >> 2];
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 18:
                {
                  o[_ >> 2] = 10;
                  c = o[t >> 2] | 0;
                  d = _;
                  F = h;
                  while (1) {
                    Wt(e, 4, d) | 0;
                    Wt(e, 19, F) | 0;
                    if ((o[h >> 2] | 0) <= (c | 0)) {
                      b = 0;
                      A = 1735;
                      break
                    }
                    s = o[_ >> 2] | 0;
                    o[_ >> 2] = s - 1;
                    if ((s | 0) <= 0) {
                      b = 0;
                      A = 1736;
                      break
                    }
                  }
                  if ((A | 0) == 1735) {
                    f = n;
                    return b | 0
                  } else if ((A | 0) == 1736) {
                    f = n;
                    return b | 0
                  }
                  break
                };
              case 19:
                {
                  Wt(o[e + 4 >> 2] | 0, 19, t) | 0;
                  A = o[(o[e + 152 >> 2] | 0) + (o[e + 156 >> 2] << 2) >> 2] | 0;
                  _ = o[e + 168 >> 2] | 0;
                  if ((A | 0) == 0) {
                    c = t;
                    o[c >> 2] = (o[c >> 2] | 0) + ((_ << 2 | 0) / (o[e + 8 >> 2] | 0) | 0);
                    b = 0;
                    f = n;
                    return b | 0
                  } else {
                    c = re(o[A + 52 >> 2] | 0, _) | 0;
                    _ = t;
                    o[_ >> 2] = (o[_ >> 2] | 0) + ((c | 0) / (o[e + 8 >> 2] | 0) | 0);
                    b = 0;
                    f = n;
                    return b | 0
                  }
                  break
                };
              case 24:
                {
                  c = o[t >> 2] | 0;
                  o[e + 168 >> 2] = c;
                  o[m >> 2] = c >> 1;
                  Wt(o[e + 4 >> 2] | 0, 24, m) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 25:
                {
                  o[t >> 2] = o[e + 168 >> 2];
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 26:
                {
                  o[e + 32 >> 2] = 1;
                  m = e + 28 | 0;
                  c = o[m >> 2] | 0;
                  do {
                    if ((c | 0) > 0) {
                      _ = e + 72 | 0;
                      A = 0;
                      h = c;
                      while (1) {
                        F = A + 1 | 0;
                        u[(o[_ >> 2] | 0) + (A << 2) >> 2] = +(F | 0) * 3.1415927410125732 / +(h + 1 | 0);
                        T = o[m >> 2] | 0;
                        if ((F | 0) < (T | 0)) {
                          A = F;
                          h = T
                        } else {
                          break
                        }
                      }
                      if ((T | 0) <= 0) {
                        break
                      }
                      h = e + 88 | 0;
                      A = e + 84 | 0;
                      _ = e + 92 | 0;
                      F = 0;
                      do {
                        u[(o[h >> 2] | 0) + (F << 2) >> 2] = 0.0;
                        u[(o[A >> 2] | 0) + (F << 2) >> 2] = 0.0;
                        u[(o[_ >> 2] | 0) + (F << 2) >> 2] = 0.0;
                        F = F + 1 | 0
                      } while ((F | 0) < (o[m >> 2] | 0))
                    }
                  } while (0);
                  m = e + 60 | 0;
                  T = e + 56 | 0;
                  c = 0;
                  while (1) {
                    u[(o[m >> 2] | 0) + (c << 2) >> 2] = 0.0;
                    u[(o[T >> 2] | 0) + (c << 2) >> 2] = 0.0;
                    F = c + 1 | 0;
                    if ((F | 0) < 64) {
                      c = F
                    } else {
                      b = 0;
                      break
                    }
                  }
                  f = n;
                  return b | 0
                };
              case 36:
                {
                  o[e + 148 >> 2] = o[t >> 2];
                  Wt(o[e + 4 >> 2] | 0, 36, t) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 37:
                {
                  o[t >> 2] = o[e + 148 >> 2];
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 39:
                {
                  Wt(o[e + 4 >> 2] | 0, 39, t) | 0;
                  c = t;
                  o[c >> 2] = (o[c >> 2] << 1) + 63;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 40:
                {
                  Wt(o[e + 4 >> 2] | 0, 40, t) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 41:
                {
                  Wt(o[e + 4 >> 2] | 0, 41, t) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 42:
                {
                  c = o[t >> 2] | 0;
                  o[e + 116 >> 2] = c;
                  do {
                    if ((c | 0) > 42199) {
                      o[e + 120 >> 2] = 17600;
                      O = 17600
                    } else {
                      if ((c | 0) > 27799) {
                        o[e + 120 >> 2] = 9600;
                        O = 9600;
                        break
                      }
                      T = e + 120 | 0;
                      if ((c | 0) > 20600) {
                        o[T >> 2] = 5600;
                        O = 5600;
                        break
                      } else {
                        o[T >> 2] = 1800;
                        O = 1800;
                        break
                      }
                    }
                  } while (0);
                  if ((o[e + 16 >> 2] | 0) == 80) {
                    o[e + 120 >> 2] = 1800;
                    R = 1800
                  } else {
                    R = O
                  }
                  o[w >> 2] = c - R;
                  Wt(o[e + 4 >> 2] | 0, 42, w) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 43:
                {
                  o[t >> 2] = o[e + 116 >> 2];
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 44:
                {
                  Wt(o[e + 4 >> 2] | 0, 44, t) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 45:
                {
                  Wt(o[e + 4 >> 2] | 0, 45, t) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 100:
                {
                  w = t;
                  R = e + 20 | 0;
                  if ((o[R >> 2] | 0) <= 0) {
                    b = 0;
                    f = n;
                    return b | 0
                  }
                  c = e + 96 | 0;
                  O = 0;
                  while (1) {
                    u[w + (O << 2) >> 2] = +u[(o[c >> 2] | 0) + (O << 2) >> 2];
                    T = O + 1 | 0;
                    if ((T | 0) < (o[R >> 2] | 0)) {
                      O = T
                    } else {
                      b = 0;
                      break
                    }
                  }
                  f = n;
                  return b | 0
                };
              case 29:
                {
                  u[t >> 2] = +u[e + 144 >> 2];
                  b = 0;
                  f = n;
                  return b | 0
                };
              case 105:
                {
                  Wt(o[e + 4 >> 2] | 0, 105, t) | 0;
                  b = 0;
                  f = n;
                  return b | 0
                };
              default:
                {
                  ve(o[p >> 2] | 0, 13552, (t = f, f = f + 16 | 0, o[t >> 2] = 13768, o[t + 8 >> 2] = r, t) | 0) | 0;
                  f = t;
                  b = -1;
                  f = n;
                  return b | 0
                }
            }
            return 0
          }
          function Ut(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0;
            n = f;
            f = f + 16 | 0;
            i = n | 0;
            a = n + 8 | 0;
            switch (r | 0) {
              case 0:
                {
                  Zt(o[e + 4 >> 2] | 0, 0, t) | 0;
                  o[e + 36 >> 2] = o[t >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 8:
                {
                  Zt(o[e + 4 >> 2] | 0, 8, t) | 0;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 26:
                {
                  l = e + 24 | 0;
                  if ((o[l >> 2] << 1 | 0) > 0) {
                    c = e + 64 | 0;
                    d = 0;
                    do {
                      u[(o[c >> 2] | 0) + (d << 2) >> 2] = 0.0;
                      d = d + 1 | 0
                    } while ((d | 0) < (o[l >> 2] << 1 | 0))
                  }
                  l = e + 48 | 0;
                  d = e + 44 | 0;
                  c = 0;
                  do {
                    u[(o[l >> 2] | 0) + (c << 2) >> 2] = 0.0;
                    u[(o[d >> 2] | 0) + (c << 2) >> 2] = 0.0;
                    c = c + 1 | 0
                  } while ((c | 0) < 64);
                  u[e + 80 >> 2] = 0.0;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 101:
                {
                  c = e + 20 | 0;
                  if ((o[c >> 2] | 0) <= 0) {
                    s = 0;
                    f = n;
                    return s | 0
                  }
                  d = e + 72 | 0;
                  l = t;
                  _ = 0;
                  while (1) {
                    u[l + (_ << 2) >> 2] = +u[(o[d >> 2] | 0) + (_ << 2) >> 2];
                    h = _ + 1 | 0;
                    if ((h | 0) < (o[c >> 2] | 0)) {
                      _ = h
                    } else {
                      s = 0;
                      break
                    }
                  }
                  f = n;
                  return s | 0
                };
              case 3:
                {
                  o[t >> 2] = o[e + 8 >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 10:
                {
                  o[e + 96 >> 2] = o[t >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 9:
                {
                  Zt(o[e + 4 >> 2] | 0, 9, t) | 0;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 1:
                {
                  o[t >> 2] = o[e + 36 >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 6:
              case 4:
                {
                  _ = o[t >> 2] | 0;
                  c = (_ | 0) < 0 ? 0 : _;
                  _ = (c | 0) > 10 ? 10 : c;
                  c = o[e >> 2] | 0;
                  o[e + 96 >> 2] = o[(o[c >> 2] | 0) + 112 + (_ << 2) >> 2];
                  o[i >> 2] = o[(o[c >> 2] | 0) + 68 + (_ << 2) >> 2];
                  Zt(o[e + 4 >> 2] | 0, 6, i) | 0;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 19:
                {
                  Zt(o[e + 4 >> 2] | 0, 19, t) | 0;
                  i = o[(o[e + 92 >> 2] | 0) + (o[e + 96 >> 2] << 2) >> 2] | 0;
                  _ = o[e + 32 >> 2] | 0;
                  if ((i | 0) == 0) {
                    c = t;
                    o[c >> 2] = (o[c >> 2] | 0) + ((_ << 2 | 0) / (o[e + 8 >> 2] | 0) | 0);
                    s = 0;
                    f = n;
                    return s | 0
                  } else {
                    c = re(o[i + 52 >> 2] | 0, _) | 0;
                    _ = t;
                    o[_ >> 2] = (o[_ >> 2] | 0) + ((c | 0) / (o[e + 8 >> 2] | 0) | 0);
                    s = 0;
                    f = n;
                    return s | 0
                  }
                  break
                };
              case 24:
                {
                  c = o[t >> 2] | 0;
                  o[e + 32 >> 2] = c;
                  o[a >> 2] = c >> 1;
                  Zt(o[e + 4 >> 2] | 0, 24, a) | 0;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 25:
                {
                  o[t >> 2] = o[e + 32 >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 20:
                {
                  Zt(o[e + 4 >> 2] | 0, 20, t) | 0;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 22:
                {
                  Zt(o[e + 4 >> 2] | 0, 22, t) | 0;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 36:
                {
                  o[e + 88 >> 2] = o[t >> 2];
                  Zt(o[e + 4 >> 2] | 0, 36, t) | 0;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 37:
                {
                  o[t >> 2] = o[e + 88 >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 39:
                {
                  Zt(o[e + 4 >> 2] | 0, 39, t) | 0;
                  a = t;
                  o[a >> 2] = o[a >> 2] << 1;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 44:
                {
                  Zt(o[e + 4 >> 2] | 0, 44, t) | 0;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 45:
                {
                  Zt(o[e + 4 >> 2] | 0, 45, t) | 0;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 47:
                {
                  Zt(o[e + 4 >> 2] | 0, 47, t) | 0;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 100:
                {
                  a = t;
                  c = e + 20 | 0;
                  if ((o[c >> 2] | 0) <= 0) {
                    s = 0;
                    f = n;
                    return s | 0
                  }
                  _ = e + 68 | 0;
                  i = 0;
                  while (1) {
                    u[a + (i << 2) >> 2] = +u[(o[_ >> 2] | 0) + (i << 2) >> 2];
                    d = i + 1 | 0;
                    if ((d | 0) < (o[c >> 2] | 0)) {
                      i = d
                    } else {
                      s = 0;
                      break
                    }
                  }
                  f = n;
                  return s | 0
                };
              case 103:
                {
                  Zt(o[e + 4 >> 2] | 0, 103, t) | 0;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 104:
                {
                  o[e + 76 >> 2] = t;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 105:
                {
                  Zt(o[e + 4 >> 2] | 0, 105, t) | 0;
                  s = 0;
                  f = n;
                  return s | 0
                };
              case 106:
                {
                  o[t >> 2] = o[e + 40 >> 2];
                  s = 0;
                  f = n;
                  return s | 0
                };
              default:
                {
                  ve(o[p >> 2] | 0, 13552, (e = f, f = f + 16 | 0, o[e >> 2] = 13768, o[e + 8 >> 2] = r, e) | 0) | 0;
                  f = e;
                  s = -1;
                  f = n;
                  return s | 0
                }
            }
            return 0
          }
          function qt(e) {
            e = e | 0;
            return Fi[o[e + 20 >> 2] & 15](e) | 0
          }
          function Ht(e) {
            e = e | 0;
            return Fi[o[e + 32 >> 2] & 15](e) | 0
          }
          function zt(e) {
            e = e | 0;
            gi[o[(o[e >> 2] | 0) + 24 >> 2] & 15](e);
            return
          }
          function Vt(e) {
            e = e | 0;
            gi[o[(o[e >> 2] | 0) + 36 >> 2] & 15](e);
            return
          }
          function jt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            return Mi[o[(o[e >> 2] | 0) + 28 >> 2] & 31](e, r, t) | 0
          }
          function Xt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            return Mi[o[(o[e >> 2] | 0) + 40 >> 2] & 31](e, r, t) | 0
          }
          function Kt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            return Mi[o[(o[e >> 2] | 0) + 28 >> 2] & 31](e, r, t) | 0
          }
          function Yt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0;
            n = f;
            f = f + 2568 | 0;
            a = n | 0;
            s = n + 8 | 0;
            l = e;
            Mi[o[(o[l >> 2] | 0) + 44 >> 2] & 31](e, 3, a) | 0;
            c = o[a >> 2] | 0;
            if ((c | 0) > 0) {
              a = 0;
              do {
                u[s + (a << 2) >> 2] = +(i[r + (a << 1) >> 1] | 0);
                a = a + 1 | 0
              } while ((a | 0) < (c | 0))
            }
            c = Mi[o[(o[l >> 2] | 0) + 28 >> 2] & 31](e, s, t) | 0;
            f = n;
            return c | 0
          }
          function Wt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            return Mi[o[(o[e >> 2] | 0) + 44 >> 2] & 31](e, r, t) | 0
          }
          function Gt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            return Mi[o[(o[e >> 2] | 0) + 40 >> 2] & 31](e, r, t) | 0
          }
          function Qt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              a = 0,
              s = 0,
              l = 0,
              c = 0,
              d = 0,
              _ = 0.0;
            n = f;
            f = f + 2568 | 0;
            a = n | 0;
            s = n + 8 | 0;
            l = e;
            Mi[o[(o[l >> 2] | 0) + 48 >> 2] & 31](e, 3, a) | 0;
            c = Mi[o[(o[l >> 2] | 0) + 40 >> 2] & 31](e, r, s) | 0;
            r = o[a >> 2] | 0;
            if ((r | 0) > 0) {
              d = 0
            } else {
              f = n;
              return c | 0
            }
            do {
              _ = +u[s + (d << 2) >> 2];
              do {
                if (_ > 32767.0) {
                  i[t + (d << 1) >> 1] = 32767
                } else {
                  if (_ < -32768.0) {
                    i[t + (d << 1) >> 1] = -32768;
                    break
                  } else {
                    i[t + (d << 1) >> 1] = ~~ + H(_ + .5);
                    break
                  }
                }
              } while (0);
              d = d + 1 | 0
            } while ((d | 0) < (r | 0));
            f = n;
            return c | 0
          }
          function Zt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            return Mi[o[(o[e >> 2] | 0) + 48 >> 2] & 31](e, r, t) | 0
          }
          function Jt(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0;
            n = f;
            do {
              if ((r | 0) == 1) {
                i = t;
                a = o[i >> 2] | 0;
                if ((a | 0) == 0) {
                  o[i >> 2] = 5;
                  s = 0;
                  break
                }
                l = o[e + 32 + (a << 2) >> 2] | 0;
                if ((l | 0) == 0) {
                  o[i >> 2] = -1;
                  s = 0;
                  break
                } else {
                  o[i >> 2] = o[l + 52 >> 2];
                  s = 0;
                  break
                }
              } else if ((r | 0) == 0) {
                o[t >> 2] = o[e >> 2];
                s = 0
              } else {
                ve(o[p >> 2] | 0, 13192, (l = f, f = f + 16 | 0, o[l >> 2] = 12768, o[l + 8 >> 2] = r, l) | 0) | 0;
                f = l;
                s = -1
              }
            } while (0);
            f = n;
            return s | 0
          }
          function $t(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              n = 0;
            t = f;
            switch (e | 0) {
              case 7:
                {
                  o[r >> 2] = 14216;
                  n = 0;
                  break
                };
              case 1:
                {
                  o[r >> 2] = 1;
                  n = 0;
                  break
                };
              case 3:
                {
                  o[r >> 2] = 1;
                  n = 0;
                  break
                };
              case 9:
                {
                  o[r >> 2] = 13544;
                  n = 0;
                  break
                };
              case 5:
                {
                  o[r >> 2] = 16;
                  n = 0;
                  break
                };
              default:
                {
                  ve(o[p >> 2] | 0, 13192, (r = f, f = f + 16 | 0, o[r >> 2] = 13320, o[r + 8 >> 2] = e, r) | 0) | 0;
                  f = r;
                  n = -1
                }
            }
            f = t;
            return n | 0
          }
          function en(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0,
              a = 0,
              s = 0;
            n = yr(e, 4) | 0;
            i = o[r + (n * 20 | 0) + 4 >> 2] | 0;
            if ((i | 0) != 0) {
              a = Mi[i & 31](e, t, o[r + (n * 20 | 0) + 8 >> 2] | 0) | 0;
              return a | 0
            }
            do {
              if ((n | 0) < 2) {
                s = 1
              } else {
                if ((n | 0) < 8) {
                  s = 4;
                  break
                }
                if ((n | 0) < 10) {
                  s = 8;
                  break
                }
                if ((n | 0) < 12) {
                  s = 16;
                  break
                }
                s = (n | 0) < 14 ? 32 : 64
              }
            } while (0);
            Ar(e, s);
            a = 0;
            return a | 0
          }
          function rn(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0;
            r = f;
            f = f + 8 | 0;
            n = r | 0;
            o[n >> 2] = yr(e, 4) | 0;
            Wt(t, 6, n) | 0;
            f = r;
            return 0
          }
          function tn(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0;
            r = f;
            f = f + 8 | 0;
            n = r | 0;
            o[n >> 2] = yr(e, 4) | 0;
            Wt(t, 8, n) | 0;
            f = r;
            return 0
          }
          function nn(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0;
            r = f;
            f = f + 8 | 0;
            n = r | 0;
            o[n >> 2] = yr(e, 4) | 0;
            Wt(t, 10, n) | 0;
            f = r;
            return 0
          }
          function on(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0;
            r = f;
            f = f + 8 | 0;
            n = r | 0;
            o[n >> 2] = yr(e, 1) | 0;
            Wt(t, 12, n) | 0;
            f = r;
            return 0
          }
          function an(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0;
            r = f;
            f = f + 8 | 0;
            n = r | 0;
            o[n >> 2] = yr(e, 1) | 0;
            Zt(t, 0, n) | 0;
            f = r;
            return 0
          }
          function sn(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0;
            r = f;
            f = f + 8 | 0;
            n = r | 0;
            u[n >> 2] = +((yr(e, 4) | 0) >>> 0 >>> 0);
            Wt(t, 14, n) | 0;
            f = r;
            return 0
          }
          function ln(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            Fe((yr(e, 8) | 0) & 255 | 0, t | 0) | 0;
            return 0
          }
          function un(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            Ar(e, (yr(e, 4) | 0) << 3 | 5);
            return 0
          }
          function cn(e, r, t, i) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            i = i | 0;
            var a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0;
            a = f;
            n[e | 0] = 83;
            n[e + 1 | 0] = 112;
            n[e + 2 | 0] = 101;
            n[e + 3 | 0] = 101;
            n[e + 4 | 0] = 120;
            n[e + 5 | 0] = 32;
            n[e + 6 | 0] = 32;
            n[e + 7 | 0] = 32;
            n[e + 8 | 0] = 49;
            n[e + 9 | 0] = 46;
            n[e + 10 | 0] = 50;
            n[e + 11 | 0] = 114;
            n[e + 12 | 0] = 99;
            n[e + 13 | 0] = 49;
            Jn(e + 14 | 0, 0, 14);
            o[e + 28 >> 2] = 1;
            o[e + 32 >> 2] = 80;
            o[e + 36 >> 2] = r;
            r = i + 12 | 0;
            o[e + 40 >> 2] = o[r >> 2];
            o[e + 44 >> 2] = o[i + 16 >> 2];
            if ((o[r >> 2] | 0) >= 0) {
              s = e + 48 | 0;
              o[s >> 2] = t;
              l = e + 52 | 0;
              o[l >> 2] = -1;
              u = e + 56 | 0;
              c = u;
              d = _t(i, 0, c) | 0;
              _ = e + 60 | 0;
              h = _;
              Jn(h | 0, 0, 20);
              f = a;
              return
            }
            ve(o[p >> 2] | 0, 12848, (r = f, f = f + 8 | 0, o[r >> 2] = 13672, r) | 0) | 0;
            f = r;
            s = e + 48 | 0;
            o[s >> 2] = t;
            l = e + 52 | 0;
            o[l >> 2] = -1;
            u = e + 56 | 0;
            c = u;
            d = _t(i, 0, c) | 0;
            _ = e + 60 | 0;
            h = _;
            Jn(h | 0, 0, 20);
            f = a;
            return
          }
          function fn(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              n = 0;
            t = Cn(80, 1) | 0;
            n = e | 0;
            Gn(t | 0, n | 0, 80) | 0;
            o[r >> 2] = 80;
            return t | 0
          }
          function dn(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0;
            t = f;
            i = 0;
            while (1) {
              if ((i | 0) >= 8) {
                break
              }
              if ((n[e + i | 0] | 0) == (n[14056 + i | 0] | 0)) {
                i = i + 1 | 0
              } else {
                a = 1893;
                break
              }
            }
            if ((a | 0) == 1893) {
              a = o[p >> 2] | 0;
              ve(a | 0, 12920, (s = f, f = f + 8 | 0, o[s >> 2] = 13440, s) | 0) | 0;
              f = s;
              l = 0;
              f = t;
              return l | 0
            }
            if ((r | 0) < 80) {
              r = o[p >> 2] | 0;
              ve(r | 0, 12920, (s = f, f = f + 8 | 0, o[s >> 2] = 13264, s) | 0) | 0;
              f = s;
              l = 0;
              f = t;
              return l | 0
            }
            r = Cn(80, 1) | 0;
            a = r;
            Gn(r | 0, e | 0, 80) | 0;
            e = r + 48 | 0;
            if ((o[r + 40 >> 2] | 0) >>> 0 > 2 >>> 0) {
              i = o[p >> 2] | 0;
              ve(i | 0, 12920, (s = f, f = f + 8 | 0, o[s >> 2] = 13104, s) | 0) | 0;
              f = s;
              Rn(r);
              l = 0;
              f = t;
              return l | 0
            }
            r = o[e >> 2] | 0;
            if ((r | 0) > 2) {
              o[e >> 2] = 2;
              l = a;
              f = t;
              return l | 0
            }
            if ((r | 0) >= 1) {
              l = a;
              f = t;
              return l | 0
            }
            o[e >> 2] = 1;
            l = a;
            f = t;
            return l | 0
          }
          function _n(e) {
            e = e | 0;
            Rn(e);
            return
          }
          function hn() {
            var e = 0;
            e = Cn(24, 1) | 0;
            u[e >> 2] = 1.0;
            u[e + 4 >> 2] = .5;
            u[e + 8 >> 2] = 1.0;
            u[e + 12 >> 2] = 1.0;
            o[e + 16 >> 2] = 0;
            o[e + 20 >> 2] = 0;
            return e | 0
          }
          function pn(e) {
            e = e | 0;
            u[e >> 2] = 1.0;
            u[e + 4 >> 2] = .5;
            u[e + 8 >> 2] = 1.0;
            u[e + 12 >> 2] = 1.0;
            o[e + 16 >> 2] = 0;
            o[e + 20 >> 2] = 0;
            return
          }
          function mn(e) {
            e = e | 0;
            Rn(e);
            return
          }
          function wn(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0.0,
              i = 0.0,
              o = 0.0,
              a = 0,
              s = 0,
              l = 0.0,
              c = 0.0,
              f = 0.0,
              d = 0.0,
              _ = 0.0,
              h = 0.0;
            if ((r | 0) > 0) {
              n = 0.0;
              i = 0.0;
              o = 0.0;
              a = 0;
              do {
                s = a << 1;
                l = +u[e + (s << 2) >> 2];
                n = n + l * l;
                c = +u[e + ((s | 1) << 2) >> 2];
                i = i + c * c;
                f = (l + c) * .5;
                u[e + (a << 2) >> 2] = f;
                o = o + f * f;
                a = a + 1 | 0
              } while ((a | 0) < (r | 0));
              d = n + 1.0;
              _ = i;
              h = o
            } else {
              d = 1.0;
              _ = 0.0;
              h = 0.0
            }
            kr(t, 14, 5);
            kr(t, 9, 4);
            o = +$(d / (_ + 1.0)) * 4.0;
            if (o > 0.0) {
              kr(t, 0, 1)
            } else {
              kr(t, 1, 1)
            }
            i = +H(+ z(+ o) + .5);
            kr(t, i > 30.0 ? 31 : ~~i, 5);
            kr(t, Mn(h / (d + _), 10688, 4) | 0, 2);
            return
          }
          function bn(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0.0,
              o = 0.0,
              a = 0.0,
              s = 0,
              l = 0,
              u = 0.0,
              c = 0.0,
              f = 0.0,
              d = 0.0,
              _ = 0.0,
              h = 0,
              p = 0.0,
              m = 0.0,
              w = 0.0,
              b = 0.0,
              E = 0.0;
            kr(t, 14, 5);
            kr(t, 9, 4);
            do {
              if ((r | 0) > 0) {
                n = 0.0;
                o = 0.0;
                a = 0.0;
                s = 0;
                do {
                  l = s << 1;
                  u = +(i[e + (l << 1) >> 1] | 0);
                  a = a + u * u;
                  c = +(i[e + ((l | 1) << 1) >> 1] | 0);
                  n = n + c * c;
                  l = ~~((u + c) * .5);
                  i[e + (s << 1) >> 1] = l;
                  c = +(l << 16 >> 16 | 0);
                  o = o + c * c;
                  s = s + 1 | 0
                } while ((s | 0) < (r | 0));
                c = o;
                if (a <= n) {
                  f = a;
                  d = c;
                  _ = n;
                  h = 1924;
                  break
                }
                kr(t, 0, 1);
                p = n;
                m = a;
                w = a;
                b = c;
                E = n
              } else {
                f = 0.0;
                d = 0.0;
                _ = 0.0;
                h = 1924
              }
            } while (0);
            if ((h | 0) == 1924) {
              kr(t, 1, 1);
              p = f;
              m = _;
              w = f;
              b = d;
              E = _
            }
            h = ~~ + H(+ z(+ (+ $((m + 1.0) / (p + 1.0)) * 4.0)) + .5);
            kr(t, (h | 0) < 31 ? h : 31, 5);
            kr(t, Mn(b / (E + (w + 1.0)), 10688, 4) | 0, 2);
            return
          }
          function En(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0.0,
              i = 0.0,
              o = 0,
              a = 0.0,
              s = 0,
              l = 0.0;
            n = +u[t >> 2];
            i = 1.0 / +V(+ u[t + 4 >> 2] * (n + 1.0));
            if ((r | 0) <= 0) {
              return
            }
            o = t + 8 | 0;
            a = i * +V(n) * .019999999552965164;
            s = t + 12 | 0;
            n = i * .019999999552965164;
            t = r;
            do {
              t = t - 1 | 0;
              i = +u[e + (t << 2) >> 2];
              l = a + +u[o >> 2] * .9800000190734863;
              u[o >> 2] = l;
              u[s >> 2] = n + +u[s >> 2] * .9800000190734863;
              r = t << 1;
              u[e + (r << 2) >> 2] = i * l;
              u[e + ((r | 1) << 2) >> 2] = i * +u[s >> 2]
            } while ((t | 0) > 0);
            return
          }
          function Sn(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0.0,
              o = 0.0,
              a = 0,
              s = 0.0,
              l = 0,
              c = 0.0;
            n = +u[t >> 2];
            o = 1.0 / +V(+ u[t + 4 >> 2] * (n + 1.0));
            if ((r | 0) <= 0) {
              return
            }
            a = t + 8 | 0;
            s = o * +V(n) * .019999999552965164;
            l = t + 12 | 0;
            n = o * .019999999552965164;
            t = r;
            do {
              t = t - 1 | 0;
              r = i[e + (t << 1) >> 1] | 0;
              o = s + +u[a >> 2] * .9800000190734863;
              u[a >> 2] = o;
              u[l >> 2] = n + +u[l >> 2] * .9800000190734863;
              c = +(r << 16 >> 16 | 0);
              r = t << 1;
              i[e + (r << 1) >> 1] = ~~(c * o);
              i[e + ((r | 1) << 1) >> 1] = ~~(c * +u[l >> 2])
            } while ((t | 0) > 0);
            return
          }
          function vn(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            r = (yr(e, 1) | 0) == 0;
            u[t >> 2] = +J((r ? .25 : -.25) * +((yr(e, 5) | 0) >>> 0 >>> 0));
            u[t + 4 >> 2] = +u[10704 + ((yr(e, 2) | 0) << 2) >> 2];
            return 0
          }
          function kn(e) {
            e = e | 0;
            u[e + 4 >> 2] = 0.0;
            u[e + 8 >> 2] = 1.0;
            u[e + 32 >> 2] = 0.0;
            u[e >> 2] = .10000000149011612;
            u[e + 40 >> 2] = 0.0;
            u[e + 36 >> 2] = 0.0;
            u[e + 44 >> 2] = 0.0;
            u[e + 52 >> 2] = .6798535585403442;
            u[e + 56 >> 2] = .05000000074505806;
            u[e + 48 >> 2] = 13.597070693969727;
            o[e + 60 >> 2] = 0;
            u[e + 12 >> 2] = 8.699514389038086;
            u[e + 16 >> 2] = 8.699514389038086;
            u[e + 20 >> 2] = 8.699514389038086;
            u[e + 24 >> 2] = 8.699514389038086;
            u[e + 28 >> 2] = 8.699514389038086;
            return
          }
          function gn(e, r, t, n, i) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = +i;
            var a = 0.0,
              s = 0,
              l = 0.0,
              c = 0.0,
              f = 0,
              d = 0.0,
              _ = 0.0,
              h = 0.0,
              p = 0.0,
              m = 0.0,
              w = 0.0,
              b = 0.0,
              E = 0.0,
              S = 0.0,
              v = 0.0,
              k = 0.0,
              g = 0,
              y = 0,
              M = 0.0,
              F = 0.0,
              A = 0.0,
              T = 0.0,
              O = 0.0,
              R = 0,
              C = 0.0,
              N = 0.0,
              P = 0.0,
              x = 0.0,
              D = 0,
              I = 0.0,
              L = 0.0,
              B = 0.0,
              U = 0.0,
              q = 0,
              H = 0,
              V = 0,
              X = 0.0,
              K = 0.0,
              Y = 0.0,
              W = 0.0,
              G = 0.0,
              Q = 0.0,
              Z = 0.0,
              J = 0,
              ee = 0.0,
              re = 0,
              te = 0.0,
              ne = 0.0;
            n = t >> 1;
            if ((n | 0) > 0) {
              a = 0.0;
              s = 0;
              while (1) {
                l = +u[r + (s << 2) >> 2];
                c = a + l * l;
                f = s + 1 | 0;
                if ((f | 0) < (n | 0)) {
                  a = c;
                  s = f
                } else {
                  d = c;
                  break
                }
              }
            } else {
              d = 0.0
            }
            if ((n | 0) < (t | 0)) {
              a = 0.0;
              s = n;
              while (1) {
                c = +u[r + (s << 2) >> 2];
                l = a + c * c;
                n = s + 1 | 0;
                if ((n | 0) < (t | 0)) {
                  a = l;
                  s = n
                } else {
                  _ = l;
                  break
                }
              }
            } else {
              _ = 0.0
            }
            a = d + _;
            l = +$(a + 6.0e3);
            s = e + 12 | 0;
            c = +u[s >> 2];
            h = l - c;
            t = e + 16 | 0;
            p = +u[t >> 2];
            m = l - p;
            r = e + 20 | 0;
            w = +u[r >> 2];
            b = l - w;
            n = e + 24 | 0;
            E = +u[n >> 2];
            S = l - E;
            f = e + 28 | 0;
            v = l - +u[f >> 2];
            k = (h * h + 0.0 + m * m + b * b + S * S + v * v) / 150.0;
            v = k > 1.0 ? 1.0 : k;
            k = i;
            S = k + -.4;
            b = S * 3.0 * +z(+ S);
            m = +u[e >> 2];
            g = e + 4 | 0;
            h = a * m + (1.0 - m) * +u[g >> 2];
            u[g >> 2] = h;
            g = e + 52 | 0;
            m = +u[g >> 2];
            y = e + 56 | 0;
            M = +u[y >> 2];
            F = m / M;
            u[e + 48 >> 2] = F;
            A = a;
            T = +j(+ A, +.3);
            O = M;
            R = a > 6.0e3;
            if (O < .06 & R) {
              C = T * .05;
              u[g >> 2] = C;
              N = C
            } else {
              N = m
            }
            m = b;
            do {
              if (m < .3) {
                C = v;
                if (C < .2) {
                  P = T;
                  x = F;
                  if (P < x * 1.2) {
                    D = 1958;
                    break
                  }
                  if (C < .05) {
                    I = P;
                    L = x
                  } else {
                    D = 1953;
                    break
                  }
                } else {
                  if (C >= .05) {
                    D = 1953;
                    break
                  }
                  I = T;
                  L = F
                }
                if (I < L * 1.5) {
                  D = 1958
                } else {
                  D = 1953
                }
              } else {
                D = 1953
              }
            } while (0);
            e: do {
              if ((D | 0) == 1953) {
                do {
                  if (m < .4) {
                    if (v >= .05) {
                      break
                    }
                    if (T < F * 1.2) {
                      D = 1958;
                      break e
                    }
                  }
                } while (0);
                if (b < 0.0) {
                  if (v < .05) {
                    D = 1958;
                    break
                  }
                }
                o[e + 60 >> 2] = 0;
                B = N;
                U = M;
                q = 0
              }
            } while (0);
            do {
              if ((D | 0) == 1958) {
                H = e + 60 | 0;
                V = (o[H >> 2] | 0) + 1 | 0;
                o[H >> 2] = V;
                v = F * 3.0;
                if ((V | 0) <= 3) {
                  B = N;
                  U = M;
                  q = V;
                  break
                }
                b = (T > v ? v : T) * .05 + N * .95;
                u[g >> 2] = b;
                v = O * .95 + .05;
                u[y >> 2] = v;
                B = b;
                U = v;
                q = V
              }
            } while (0);
            if (T < F & R) {
              u[g >> 2] = T * .05 + B * .95;
              u[y >> 2] = U * .95 + .05
            }
            do {
              if (a < 3.0e4) {
                U = a < 1.0e4 ? 5.600000381469727 : 6.300000190734863;
                if (a >= 3.0e3) {
                  X = U;
                  break
                }
                X = U + -.7
              } else {
                U = a + 1.0;
                B = +$(U / (+ u[e + 8 >> 2] + 1.0));
                T = +$(U / (h + 1.0));
                U = T < -5.0 ? -5.0 : T;
                T = U > 2.0 ? 2.0 : U;
                if (T > 0.0) {
                  K = T * .6 + 7.0
                } else {
                  K = 7.0
                }
                if (T < 0.0) {
                  Y = T * .5 + K
                } else {
                  Y = K
                }
                if (B > 0.0) {
                  W = (B > 5.0 ? 2.5 : B * .5) + Y
                } else {
                  W = Y
                }
                if (_ <= d * 1.6) {
                  X = W;
                  break
                }
                X = W + .5
              }
            } while (0);
            u[e + 8 >> 2] = a;
            y = e + 40 | 0;
            W = k * .4 + +u[y >> 2] * .6;
            u[y >> 2] = W;
            k = X + (S + (W + -.4)) * 2.2;
            y = e + 44 | 0;
            W = +u[y >> 2];
            if (k < W) {
              G = W * .5 + k * .5
            } else {
              G = k
            }
            k = G < 4.0 ? 4.0 : G;
            g = (q | 0) > 2;
            G = g ? 4.0 : k > 10.0 ? 10.0 : k;
            if ((q | 0) == 0) {
              Q = G
            } else {
              Q = G - (+ $(+ (q | 0) + 3.0) + -1.0986122886681098)
            }
            G = Q < 0.0 ? 0.0 : Q;
            if (a >= 6.0e4) {
              Z = G;
              J = Z < -1.0;
              ee = J ? -1.0 : Z;
              re = e + 36 | 0;
              u[re >> 2] = i;
              u[y >> 2] = ee;
              u[f >> 2] = E;
              u[n >> 2] = w;
              u[r >> 2] = p;
              u[t >> 2] = c;
              u[s >> 2] = l;
              return + ee
            }
            if (g) {
              te = G - (+ $(+ (q | 0) + 3.0) + -1.0986122886681098) * .5
            } else {
              te = G
            }
            if (a >= 1.0e4 | g ^ 1) {
              ne = te
            } else {
              ne = te - (+ $(+ (q | 0) + 3.0) + -1.0986122886681098) * .5
            }
            te = +$(A / 6.0e4 + 1.0e-4) * .3;
            Z = (ne < 0.0 ? 0.0 : ne) + te;
            J = Z < -1.0;
            ee = J ? -1.0 : Z;
            re = e + 36 | 0;
            u[re >> 2] = i;
            u[y >> 2] = ee;
            u[f >> 2] = E;
            u[n >> 2] = w;
            u[r >> 2] = p;
            u[t >> 2] = c;
            u[s >> 2] = l;
            return + ee
          }
          function yn(e) {
            e = e | 0;
            return
          }
          function Mn(e, r, t) {
            e = +e;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0,
              o = 0,
              a = 0;
            n = t - 1 | 0;
            e: do {
              if ((n | 0) > 0) {
                t = r;
                i = 0;
                while (1) {
                  if (+ u[t >> 2] >= e) {
                    o = i;
                    break e
                  }
                  a = i + 1 | 0;
                  if ((a | 0) < (n | 0)) {
                    t = t + 4 | 0;
                    i = a
                  } else {
                    o = a;
                    break
                  }
                }
              } else {
                o = 0
              }
            } while (0);
            return o | 0
          }
          function Fn(e, r, t) {
            e = +e;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0,
              o = 0,
              a = 0;
            n = t - 1 | 0;
            e: do {
              if ((n | 0) > 0) {
                t = r;
                i = 0;
                while (1) {
                  if (+ u[t >> 2] >= e) {
                    o = i;
                    break e
                  }
                  a = i + 1 | 0;
                  if ((a | 0) < (n | 0)) {
                    t = t + 4 | 0;
                    i = a
                  } else {
                    o = a;
                    break
                  }
                }
              } else {
                o = 0
              }
            } while (0);
            return o | 0
          }
          function An(e, r, t, n, i, a, s, l, c) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            c = c | 0;
            var f = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0.0,
              b = 0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0,
              y = 0,
              M = 0.0,
              F = 0.0,
              A = 0,
              T = 0;
            if ((n | 0) <= 0) {
              return
            }
            c = a - 1 | 0;
            f = l + (c << 2) | 0;
            d = (c | 0) > 0;
            if ((t | 0) > 0) {
              _ = r;
              h = 0;
              p = 0
            } else {
              r = 0;
              m = 0;
              while (1) {
                w = +u[i + (r << 2) >> 2] * .5;
                if ((r | 0) < (a | 0)) {
                  b = 2010
                } else {
                  if (w < +u[f >> 2]) {
                    b = 2010
                  } else {
                    E = m
                  }
                }
                if ((b | 0) == 2010) {
                  b = 0;
                  e: do {
                    if (d) {
                      S = a;
                      v = c;
                      while (1) {
                        k = S - 2 | 0;
                        g = l + (k << 2) | 0;
                        if ((v | 0) <= (m | 0)) {
                          if (w >= +u[g >> 2]) {
                            y = v;
                            break e
                          }
                        }
                        u[l + (v << 2) >> 2] = +u[g >> 2];
                        o[s + (v << 2) >> 2] = o[s + (k << 2) >> 2];
                        k = v - 1 | 0;
                        if ((k | 0) > 0) {
                          S = v;
                          v = k
                        } else {
                          y = k;
                          break
                        }
                      }
                    } else {
                      y = c
                    }
                  } while (0);
                  u[l + (y << 2) >> 2] = w;
                  o[s + (y << 2) >> 2] = r;
                  E = m + 1 | 0
                }
                v = r + 1 | 0;
                if ((v | 0) < (n | 0)) {
                  r = v;
                  m = E
                } else {
                  break
                }
              }
              return
            }
            while (1) {
              E = _;
              m = 0;
              M = 0.0;
              while (1) {
                F = M + +u[e + (m << 2) >> 2] * +u[E >> 2];
                r = m + 1 | 0;
                if ((r | 0) < (t | 0)) {
                  E = E + 4 | 0;
                  m = r;
                  M = F
                } else {
                  break
                }
              }
              m = _ + (t << 2) | 0;
              M = +u[i + (h << 2) >> 2] * .5 - F;
              if ((h | 0) < (a | 0)) {
                b = 2007
              } else {
                if (M < +u[f >> 2]) {
                  b = 2007
                } else {
                  A = p
                }
              }
              if ((b | 0) == 2007) {
                b = 0;
                e: do {
                  if (d) {
                    E = a;
                    r = c;
                    while (1) {
                      y = E - 2 | 0;
                      v = l + (y << 2) | 0;
                      if ((r | 0) <= (p | 0)) {
                        if (M >= +u[v >> 2]) {
                          T = r;
                          break e
                        }
                      }
                      u[l + (r << 2) >> 2] = +u[v >> 2];
                      o[s + (r << 2) >> 2] = o[s + (y << 2) >> 2];
                      y = r - 1 | 0;
                      if ((y | 0) > 0) {
                        E = r;
                        r = y
                      } else {
                        T = y;
                        break
                      }
                    }
                  } else {
                    T = c
                  }
                } while (0);
                u[l + (T << 2) >> 2] = M;
                o[s + (T << 2) >> 2] = h;
                A = p + 1 | 0
              }
              r = h + 1 | 0;
              if ((r | 0) < (n | 0)) {
                _ = m;
                h = r;
                p = A
              } else {
                break
              }
            }
            return
          }
          function Tn(e, r, t, n, i, a, s, l, c) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            c = c | 0;
            var f = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0.0,
              E = 0.0,
              S = 0,
              v = 0.0,
              k = 0,
              g = 0,
              y = 0,
              M = 0,
              F = 0,
              A = 0;
            if ((n | 0) <= 0) {
              return
            }
            c = (t | 0) > 0;
            f = a - 1 | 0;
            d = l + (f << 2) | 0;
            _ = (f | 0) > 0;
            h = r;
            r = 0;
            p = 0;
            while (1) {
              do {
                if (c) {
                  m = h;
                  w = 0;
                  b = 0.0;
                  while (1) {
                    E = b + +u[e + (w << 2) >> 2] * +u[m >> 2];
                    S = w + 1 | 0;
                    if ((S | 0) < (t | 0)) {
                      m = m + 4 | 0;
                      w = S;
                      b = E
                    } else {
                      break
                    }
                  }
                  w = h + (t << 2) | 0;
                  if (E <= 0.0) {
                    v = E;
                    k = 1;
                    g = w;
                    break
                  }
                  v = -0.0 - E;
                  k = 0;
                  g = w
                } else {
                  v = 0.0;
                  k = 1;
                  g = h
                }
              } while (0);
              b = v + +u[i + (r << 2) >> 2] * .5;
              if ((r | 0) < (a | 0)) {
                y = 2028
              } else {
                if (b < +u[d >> 2]) {
                  y = 2028
                } else {
                  M = p
                }
              }
              do {
                if ((y | 0) == 2028) {
                  y = 0;
                  e: do {
                    if (_) {
                      w = a;
                      m = f;
                      while (1) {
                        S = w - 2 | 0;
                        F = l + (S << 2) | 0;
                        if ((m | 0) <= (p | 0)) {
                          if (b >= +u[F >> 2]) {
                            A = m;
                            break e
                          }
                        }
                        u[l + (m << 2) >> 2] = +u[F >> 2];
                        o[s + (m << 2) >> 2] = o[s + (S << 2) >> 2];
                        S = m - 1 | 0;
                        if ((S | 0) > 0) {
                          w = m;
                          m = S
                        } else {
                          A = S;
                          break
                        }
                      }
                    } else {
                      A = f
                    }
                  } while (0);
                  u[l + (A << 2) >> 2] = b;
                  m = s + (A << 2) | 0;
                  o[m >> 2] = r;
                  w = p + 1 | 0;
                  if ((k | 0) == 0) {
                    M = w;
                    break
                  }
                  o[m >> 2] = r + n;
                  M = w
                }
              } while (0);
              w = r + 1 | 0;
              if ((w | 0) < (n | 0)) {
                h = g;
                r = w;
                p = M
              } else {
                break
              }
            }
            return
          }
          function On(e) {
            e = e | 0;
            var r = 0,
              t = 0,
              n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              f = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0,
              y = 0,
              M = 0,
              F = 0,
              A = 0,
              T = 0,
              O = 0,
              R = 0,
              C = 0,
              N = 0,
              P = 0,
              x = 0,
              D = 0,
              I = 0,
              L = 0,
              B = 0,
              U = 0,
              q = 0,
              H = 0,
              z = 0,
              V = 0,
              j = 0,
              X = 0,
              K = 0,
              Y = 0,
              W = 0,
              G = 0,
              Q = 0,
              Z = 0,
              J = 0,
              $ = 0,
              ee = 0,
              re = 0,
              te = 0,
              ne = 0,
              ie = 0,
              oe = 0,
              ae = 0,
              se = 0,
              le = 0,
              ue = 0,
              ce = 0,
              fe = 0,
              de = 0,
              _e = 0,
              he = 0,
              pe = 0,
              me = 0,
              we = 0,
              be = 0,
              Ee = 0,
              ve = 0,
              ke = 0,
              ge = 0,
              ye = 0,
              Me = 0,
              Fe = 0,
              Ae = 0,
              Te = 0,
              Oe = 0,
              Re = 0,
              Ce = 0,
              Ne = 0,
              Pe = 0;
            do {
              if (e >>> 0 < 245 >>> 0) {
                if (e >>> 0 < 11 >>> 0) {
                  r = 16
                } else {
                  r = e + 11 & -8
                }
                t = r >>> 3;
                n = o[3556] | 0;
                i = n >>> (t >>> 0);
                if ((i & 3 | 0) != 0) {
                  a = (i & 1 ^ 1) + t | 0;
                  s = a << 1;
                  l = 14264 + (s << 2) | 0;
                  u = 14264 + (s + 2 << 2) | 0;
                  s = o[u >> 2] | 0;
                  c = s + 8 | 0;
                  f = o[c >> 2] | 0;
                  do {
                    if ((l | 0) == (f | 0)) {
                      o[3556] = n & ~(1 << a)
                    } else {
                      if (f >>> 0 < (o[3560] | 0) >>> 0) {
                        Se();
                        return 0
                      }
                      d = f + 12 | 0;
                      if ((o[d >> 2] | 0) == (s | 0)) {
                        o[d >> 2] = l;
                        o[u >> 2] = f;
                        break
                      } else {
                        Se();
                        return 0
                      }
                    }
                  } while (0);
                  f = a << 3;
                  o[s + 4 >> 2] = f | 3;
                  u = s + (f | 4) | 0;
                  o[u >> 2] = o[u >> 2] | 1;
                  _ = c;
                  return _ | 0
                }
                if (r >>> 0 <= (o[3558] | 0) >>> 0) {
                  h = r;
                  break
                }
                if ((i | 0) != 0) {
                  u = 2 << t;
                  f = i << t & (u | -u);
                  u = (f & -f) - 1 | 0;
                  f = u >>> 12 & 16;
                  l = u >>> (f >>> 0);
                  u = l >>> 5 & 8;
                  d = l >>> (u >>> 0);
                  l = d >>> 2 & 4;
                  p = d >>> (l >>> 0);
                  d = p >>> 1 & 2;
                  m = p >>> (d >>> 0);
                  p = m >>> 1 & 1;
                  w = (u | f | l | d | p) + (m >>> (p >>> 0)) | 0;
                  p = w << 1;
                  m = 14264 + (p << 2) | 0;
                  d = 14264 + (p + 2 << 2) | 0;
                  p = o[d >> 2] | 0;
                  l = p + 8 | 0;
                  f = o[l >> 2] | 0;
                  do {
                    if ((m | 0) == (f | 0)) {
                      o[3556] = n & ~(1 << w)
                    } else {
                      if (f >>> 0 < (o[3560] | 0) >>> 0) {
                        Se();
                        return 0
                      }
                      u = f + 12 | 0;
                      if ((o[u >> 2] | 0) == (p | 0)) {
                        o[u >> 2] = m;
                        o[d >> 2] = f;
                        break
                      } else {
                        Se();
                        return 0
                      }
                    }
                  } while (0);
                  f = w << 3;
                  d = f - r | 0;
                  o[p + 4 >> 2] = r | 3;
                  m = p;
                  n = m + r | 0;
                  o[m + (r | 4) >> 2] = d | 1;
                  o[m + f >> 2] = d;
                  f = o[3558] | 0;
                  if ((f | 0) != 0) {
                    m = o[3561] | 0;
                    t = f >>> 3;
                    f = t << 1;
                    i = 14264 + (f << 2) | 0;
                    c = o[3556] | 0;
                    s = 1 << t;
                    do {
                      if ((c & s | 0) == 0) {
                        o[3556] = c | s;
                        b = i;
                        E = 14264 + (f + 2 << 2) | 0
                      } else {
                        t = 14264 + (f + 2 << 2) | 0;
                        a = o[t >> 2] | 0;
                        if (a >>> 0 >= (o[3560] | 0) >>> 0) {
                          b = a;
                          E = t;
                          break
                        }
                        Se();
                        return 0
                      }
                    } while (0);
                    o[E >> 2] = m;
                    o[b + 12 >> 2] = m;
                    o[m + 8 >> 2] = b;
                    o[m + 12 >> 2] = i
                  }
                  o[3558] = d;
                  o[3561] = n;
                  _ = l;
                  return _ | 0
                }
                f = o[3557] | 0;
                if ((f | 0) == 0) {
                  h = r;
                  break
                }
                s = (f & -f) - 1 | 0;
                f = s >>> 12 & 16;
                c = s >>> (f >>> 0);
                s = c >>> 5 & 8;
                p = c >>> (s >>> 0);
                c = p >>> 2 & 4;
                w = p >>> (c >>> 0);
                p = w >>> 1 & 2;
                t = w >>> (p >>> 0);
                w = t >>> 1 & 1;
                a = o[14528 + ((s | f | c | p | w) + (t >>> (w >>> 0)) << 2) >> 2] | 0;
                w = a;
                t = a;
                p = (o[a + 4 >> 2] & -8) - r | 0;
                while (1) {
                  a = o[w + 16 >> 2] | 0;
                  if ((a | 0) == 0) {
                    c = o[w + 20 >> 2] | 0;
                    if ((c | 0) == 0) {
                      break
                    } else {
                      S = c
                    }
                  } else {
                    S = a
                  }
                  a = (o[S + 4 >> 2] & -8) - r | 0;
                  c = a >>> 0 < p >>> 0;
                  w = S;
                  t = c ? S : t;
                  p = c ? a : p
                }
                w = t;
                l = o[3560] | 0;
                if (w >>> 0 < l >>> 0) {
                  Se();
                  return 0
                }
                n = w + r | 0;
                d = n;
                if (w >>> 0 >= n >>> 0) {
                  Se();
                  return 0
                }
                n = o[t + 24 >> 2] | 0;
                i = o[t + 12 >> 2] | 0;
                do {
                  if ((i | 0) == (t | 0)) {
                    m = t + 20 | 0;
                    a = o[m >> 2] | 0;
                    if ((a | 0) == 0) {
                      c = t + 16 | 0;
                      f = o[c >> 2] | 0;
                      if ((f | 0) == 0) {
                        v = 0;
                        break
                      } else {
                        k = f;
                        g = c
                      }
                    } else {
                      k = a;
                      g = m
                    }
                    while (1) {
                      m = k + 20 | 0;
                      a = o[m >> 2] | 0;
                      if ((a | 0) != 0) {
                        k = a;
                        g = m;
                        continue
                      }
                      m = k + 16 | 0;
                      a = o[m >> 2] | 0;
                      if ((a | 0) == 0) {
                        break
                      } else {
                        k = a;
                        g = m
                      }
                    }
                    if (g >>> 0 < l >>> 0) {
                      Se();
                      return 0
                    } else {
                      o[g >> 2] = 0;
                      v = k;
                      break
                    }
                  } else {
                    m = o[t + 8 >> 2] | 0;
                    if (m >>> 0 < l >>> 0) {
                      Se();
                      return 0
                    }
                    a = m + 12 | 0;
                    if ((o[a >> 2] | 0) != (t | 0)) {
                      Se();
                      return 0
                    }
                    c = i + 8 | 0;
                    if ((o[c >> 2] | 0) == (t | 0)) {
                      o[a >> 2] = i;
                      o[c >> 2] = m;
                      v = i;
                      break
                    } else {
                      Se();
                      return 0
                    }
                  }
                } while (0);
                e: do {
                  if ((n | 0) != 0) {
                    i = t + 28 | 0;
                    l = 14528 + (o[i >> 2] << 2) | 0;
                    do {
                      if ((t | 0) == (o[l >> 2] | 0)) {
                        o[l >> 2] = v;
                        if ((v | 0) != 0) {
                          break
                        }
                        o[3557] = o[3557] & ~(1 << o[i >> 2]);
                        break e
                      } else {
                        if (n >>> 0 < (o[3560] | 0) >>> 0) {
                          Se();
                          return 0
                        }
                        m = n + 16 | 0;
                        if ((o[m >> 2] | 0) == (t | 0)) {
                          o[m >> 2] = v
                        } else {
                          o[n + 20 >> 2] = v
                        }
                        if ((v | 0) == 0) {
                          break e
                        }
                      }
                    } while (0);
                    if (v >>> 0 < (o[3560] | 0) >>> 0) {
                      Se();
                      return 0
                    }
                    o[v + 24 >> 2] = n;
                    i = o[t + 16 >> 2] | 0;
                    do {
                      if ((i | 0) != 0) {
                        if (i >>> 0 < (o[3560] | 0) >>> 0) {
                          Se();
                          return 0
                        } else {
                          o[v + 16 >> 2] = i;
                          o[i + 24 >> 2] = v;
                          break
                        }
                      }
                    } while (0);
                    i = o[t + 20 >> 2] | 0;
                    if ((i | 0) == 0) {
                      break
                    }
                    if (i >>> 0 < (o[3560] | 0) >>> 0) {
                      Se();
                      return 0
                    } else {
                      o[v + 20 >> 2] = i;
                      o[i + 24 >> 2] = v;
                      break
                    }
                  }
                } while (0);
                if (p >>> 0 < 16 >>> 0) {
                  n = p + r | 0;
                  o[t + 4 >> 2] = n | 3;
                  i = w + (n + 4) | 0;
                  o[i >> 2] = o[i >> 2] | 1
                } else {
                  o[t + 4 >> 2] = r | 3;
                  o[w + (r | 4) >> 2] = p | 1;
                  o[w + (p + r) >> 2] = p;
                  i = o[3558] | 0;
                  if ((i | 0) != 0) {
                    n = o[3561] | 0;
                    l = i >>> 3;
                    i = l << 1;
                    m = 14264 + (i << 2) | 0;
                    c = o[3556] | 0;
                    a = 1 << l;
                    do {
                      if ((c & a | 0) == 0) {
                        o[3556] = c | a;
                        y = m;
                        M = 14264 + (i + 2 << 2) | 0
                      } else {
                        l = 14264 + (i + 2 << 2) | 0;
                        f = o[l >> 2] | 0;
                        if (f >>> 0 >= (o[3560] | 0) >>> 0) {
                          y = f;
                          M = l;
                          break
                        }
                        Se();
                        return 0
                      }
                    } while (0);
                    o[M >> 2] = n;
                    o[y + 12 >> 2] = n;
                    o[n + 8 >> 2] = y;
                    o[n + 12 >> 2] = m
                  }
                  o[3558] = p;
                  o[3561] = d
                }
                i = t + 8 | 0;
                if ((i | 0) == 0) {
                  h = r;
                  break
                } else {
                  _ = i
                }
                return _ | 0
              } else {
                if (e >>> 0 > 4294967231 >>> 0) {
                  h = -1;
                  break
                }
                i = e + 11 | 0;
                a = i & -8;
                c = o[3557] | 0;
                if ((c | 0) == 0) {
                  h = a;
                  break
                }
                w = -a | 0;
                l = i >>> 8;
                do {
                  if ((l | 0) == 0) {
                    F = 0
                  } else {
                    if (a >>> 0 > 16777215 >>> 0) {
                      F = 31;
                      break
                    }
                    i = (l + 1048320 | 0) >>> 16 & 8;
                    f = l << i;
                    s = (f + 520192 | 0) >>> 16 & 4;
                    u = f << s;
                    f = (u + 245760 | 0) >>> 16 & 2;
                    A = 14 - (s | i | f) + (u << f >>> 15) | 0;
                    F = a >>> ((A + 7 | 0) >>> 0) & 1 | A << 1
                  }
                } while (0);
                l = o[14528 + (F << 2) >> 2] | 0;
                e: do {
                  if ((l | 0) == 0) {
                    T = 0;
                    O = w;
                    R = 0
                  } else {
                    if ((F | 0) == 31) {
                      C = 0
                    } else {
                      C = 25 - (F >>> 1) | 0
                    }
                    t = 0;
                    d = w;
                    p = l;
                    m = a << C;
                    n = 0;
                    while (1) {
                      A = o[p + 4 >> 2] & -8;
                      f = A - a | 0;
                      if (f >>> 0 < d >>> 0) {
                        if ((A | 0) == (a | 0)) {
                          T = p;
                          O = f;
                          R = p;
                          break e
                        } else {
                          N = p;
                          P = f
                        }
                      } else {
                        N = t;
                        P = d
                      }
                      f = o[p + 20 >> 2] | 0;
                      A = o[p + 16 + (m >>> 31 << 2) >> 2] | 0;
                      u = (f | 0) == 0 | (f | 0) == (A | 0) ? n : f;
                      if ((A | 0) == 0) {
                        T = N;
                        O = P;
                        R = u;
                        break
                      } else {
                        t = N;
                        d = P;
                        p = A;
                        m = m << 1;
                        n = u
                      }
                    }
                  }
                } while (0);
                if ((R | 0) == 0 & (T | 0) == 0) {
                  l = 2 << F;
                  w = c & (l | -l);
                  if ((w | 0) == 0) {
                    h = a;
                    break
                  }
                  l = (w & -w) - 1 | 0;
                  w = l >>> 12 & 16;
                  n = l >>> (w >>> 0);
                  l = n >>> 5 & 8;
                  m = n >>> (l >>> 0);
                  n = m >>> 2 & 4;
                  p = m >>> (n >>> 0);
                  m = p >>> 1 & 2;
                  d = p >>> (m >>> 0);
                  p = d >>> 1 & 1;
                  x = o[14528 + ((l | w | n | m | p) + (d >>> (p >>> 0)) << 2) >> 2] | 0
                } else {
                  x = R
                }
                if ((x | 0) == 0) {
                  D = O;
                  I = T
                } else {
                  p = x;
                  d = O;
                  m = T;
                  while (1) {
                    n = (o[p + 4 >> 2] & -8) - a | 0;
                    w = n >>> 0 < d >>> 0;
                    l = w ? n : d;
                    n = w ? p : m;
                    w = o[p + 16 >> 2] | 0;
                    if ((w | 0) != 0) {
                      p = w;
                      d = l;
                      m = n;
                      continue
                    }
                    w = o[p + 20 >> 2] | 0;
                    if ((w | 0) == 0) {
                      D = l;
                      I = n;
                      break
                    } else {
                      p = w;
                      d = l;
                      m = n
                    }
                  }
                }
                if ((I | 0) == 0) {
                  h = a;
                  break
                }
                if (D >>> 0 >= ((o[3558] | 0) - a | 0) >>> 0) {
                  h = a;
                  break
                }
                m = I;
                d = o[3560] | 0;
                if (m >>> 0 < d >>> 0) {
                  Se();
                  return 0
                }
                p = m + a | 0;
                c = p;
                if (m >>> 0 >= p >>> 0) {
                  Se();
                  return 0
                }
                n = o[I + 24 >> 2] | 0;
                l = o[I + 12 >> 2] | 0;
                do {
                  if ((l | 0) == (I | 0)) {
                    w = I + 20 | 0;
                    t = o[w >> 2] | 0;
                    if ((t | 0) == 0) {
                      u = I + 16 | 0;
                      A = o[u >> 2] | 0;
                      if ((A | 0) == 0) {
                        L = 0;
                        break
                      } else {
                        B = A;
                        U = u
                      }
                    } else {
                      B = t;
                      U = w
                    }
                    while (1) {
                      w = B + 20 | 0;
                      t = o[w >> 2] | 0;
                      if ((t | 0) != 0) {
                        B = t;
                        U = w;
                        continue
                      }
                      w = B + 16 | 0;
                      t = o[w >> 2] | 0;
                      if ((t | 0) == 0) {
                        break
                      } else {
                        B = t;
                        U = w
                      }
                    }
                    if (U >>> 0 < d >>> 0) {
                      Se();
                      return 0
                    } else {
                      o[U >> 2] = 0;
                      L = B;
                      break
                    }
                  } else {
                    w = o[I + 8 >> 2] | 0;
                    if (w >>> 0 < d >>> 0) {
                      Se();
                      return 0
                    }
                    t = w + 12 | 0;
                    if ((o[t >> 2] | 0) != (I | 0)) {
                      Se();
                      return 0
                    }
                    u = l + 8 | 0;
                    if ((o[u >> 2] | 0) == (I | 0)) {
                      o[t >> 2] = l;
                      o[u >> 2] = w;
                      L = l;
                      break
                    } else {
                      Se();
                      return 0
                    }
                  }
                } while (0);
                e: do {
                  if ((n | 0) != 0) {
                    l = I + 28 | 0;
                    d = 14528 + (o[l >> 2] << 2) | 0;
                    do {
                      if ((I | 0) == (o[d >> 2] | 0)) {
                        o[d >> 2] = L;
                        if ((L | 0) != 0) {
                          break
                        }
                        o[3557] = o[3557] & ~(1 << o[l >> 2]);
                        break e
                      } else {
                        if (n >>> 0 < (o[3560] | 0) >>> 0) {
                          Se();
                          return 0
                        }
                        w = n + 16 | 0;
                        if ((o[w >> 2] | 0) == (I | 0)) {
                          o[w >> 2] = L
                        } else {
                          o[n + 20 >> 2] = L
                        }
                        if ((L | 0) == 0) {
                          break e
                        }
                      }
                    } while (0);
                    if (L >>> 0 < (o[3560] | 0) >>> 0) {
                      Se();
                      return 0
                    }
                    o[L + 24 >> 2] = n;
                    l = o[I + 16 >> 2] | 0;
                    do {
                      if ((l | 0) != 0) {
                        if (l >>> 0 < (o[3560] | 0) >>> 0) {
                          Se();
                          return 0
                        } else {
                          o[L + 16 >> 2] = l;
                          o[l + 24 >> 2] = L;
                          break
                        }
                      }
                    } while (0);
                    l = o[I + 20 >> 2] | 0;
                    if ((l | 0) == 0) {
                      break
                    }
                    if (l >>> 0 < (o[3560] | 0) >>> 0) {
                      Se();
                      return 0
                    } else {
                      o[L + 20 >> 2] = l;
                      o[l + 24 >> 2] = L;
                      break
                    }
                  }
                } while (0);
                do {
                  if (D >>> 0 < 16 >>> 0) {
                    n = D + a | 0;
                    o[I + 4 >> 2] = n | 3;
                    l = m + (n + 4) | 0;
                    o[l >> 2] = o[l >> 2] | 1
                  } else {
                    o[I + 4 >> 2] = a | 3;
                    o[m + (a | 4) >> 2] = D | 1;
                    o[m + (D + a) >> 2] = D;
                    l = D >>> 3;
                    if (D >>> 0 < 256 >>> 0) {
                      n = l << 1;
                      d = 14264 + (n << 2) | 0;
                      w = o[3556] | 0;
                      u = 1 << l;
                      do {
                        if ((w & u | 0) == 0) {
                          o[3556] = w | u;
                          q = d;
                          H = 14264 + (n + 2 << 2) | 0
                        } else {
                          l = 14264 + (n + 2 << 2) | 0;
                          t = o[l >> 2] | 0;
                          if (t >>> 0 >= (o[3560] | 0) >>> 0) {
                            q = t;
                            H = l;
                            break
                          }
                          Se();
                          return 0
                        }
                      } while (0);
                      o[H >> 2] = c;
                      o[q + 12 >> 2] = c;
                      o[m + (a + 8) >> 2] = q;
                      o[m + (a + 12) >> 2] = d;
                      break
                    }
                    n = p;
                    u = D >>> 8;
                    do {
                      if ((u | 0) == 0) {
                        z = 0
                      } else {
                        if (D >>> 0 > 16777215 >>> 0) {
                          z = 31;
                          break
                        }
                        w = (u + 1048320 | 0) >>> 16 & 8;
                        l = u << w;
                        t = (l + 520192 | 0) >>> 16 & 4;
                        A = l << t;
                        l = (A + 245760 | 0) >>> 16 & 2;
                        f = 14 - (t | w | l) + (A << l >>> 15) | 0;
                        z = D >>> ((f + 7 | 0) >>> 0) & 1 | f << 1
                      }
                    } while (0);
                    u = 14528 + (z << 2) | 0;
                    o[m + (a + 28) >> 2] = z;
                    o[m + (a + 20) >> 2] = 0;
                    o[m + (a + 16) >> 2] = 0;
                    d = o[3557] | 0;
                    f = 1 << z;
                    if ((d & f | 0) == 0) {
                      o[3557] = d | f;
                      o[u >> 2] = n;
                      o[m + (a + 24) >> 2] = u;
                      o[m + (a + 12) >> 2] = n;
                      o[m + (a + 8) >> 2] = n;
                      break
                    }
                    if ((z | 0) == 31) {
                      V = 0
                    } else {
                      V = 25 - (z >>> 1) | 0
                    }
                    f = D << V;
                    d = o[u >> 2] | 0;
                    while (1) {
                      if ((o[d + 4 >> 2] & -8 | 0) == (D | 0)) {
                        break
                      }
                      j = d + 16 + (f >>> 31 << 2) | 0;
                      u = o[j >> 2] | 0;
                      if ((u | 0) == 0) {
                        X = 2188;
                        break
                      } else {
                        f = f << 1;
                        d = u
                      }
                    }
                    if ((X | 0) == 2188) {
                      if (j >>> 0 < (o[3560] | 0) >>> 0) {
                        Se();
                        return 0
                      } else {
                        o[j >> 2] = n;
                        o[m + (a + 24) >> 2] = d;
                        o[m + (a + 12) >> 2] = n;
                        o[m + (a + 8) >> 2] = n;
                        break
                      }
                    }
                    f = d + 8 | 0;
                    u = o[f >> 2] | 0;
                    l = o[3560] | 0;
                    if (d >>> 0 < l >>> 0) {
                      Se();
                      return 0
                    }
                    if (u >>> 0 < l >>> 0) {
                      Se();
                      return 0
                    } else {
                      o[u + 12 >> 2] = n;
                      o[f >> 2] = n;
                      o[m + (a + 8) >> 2] = u;
                      o[m + (a + 12) >> 2] = d;
                      o[m + (a + 24) >> 2] = 0;
                      break
                    }
                  }
                } while (0);
                m = I + 8 | 0;
                if ((m | 0) == 0) {
                  h = a;
                  break
                } else {
                  _ = m
                }
                return _ | 0
              }
            } while (0);
            I = o[3558] | 0;
            if (h >>> 0 <= I >>> 0) {
              j = I - h | 0;
              D = o[3561] | 0;
              if (j >>> 0 > 15 >>> 0) {
                V = D;
                o[3561] = V + h;
                o[3558] = j;
                o[V + (h + 4) >> 2] = j | 1;
                o[V + I >> 2] = j;
                o[D + 4 >> 2] = h | 3
              } else {
                o[3558] = 0;
                o[3561] = 0;
                o[D + 4 >> 2] = I | 3;
                j = D + (I + 4) | 0;
                o[j >> 2] = o[j >> 2] | 1
              }
              _ = D + 8 | 0;
              return _ | 0
            }
            D = o[3559] | 0;
            if (h >>> 0 < D >>> 0) {
              j = D - h | 0;
              o[3559] = j;
              D = o[3562] | 0;
              I = D;
              o[3562] = I + h;
              o[I + (h + 4) >> 2] = j | 1;
              o[D + 4 >> 2] = h | 3;
              _ = D + 8 | 0;
              return _ | 0
            }
            do {
              if ((o[3548] | 0) == 0) {
                D = De(30) | 0;
                if ((D - 1 & D | 0) == 0) {
                  o[3550] = D;
                  o[3549] = D;
                  o[3551] = -1;
                  o[3552] = -1;
                  o[3553] = 0;
                  o[3667] = 0;
                  o[3548] = (Xe(0) | 0) & -16 ^ 1431655768;
                  break
                } else {
                  Se();
                  return 0
                }
              }
            } while (0);
            D = h + 48 | 0;
            j = o[3550] | 0;
            I = h + 47 | 0;
            V = j + I | 0;
            z = -j | 0;
            j = V & z;
            if (j >>> 0 <= h >>> 0) {
              _ = 0;
              return _ | 0
            }
            q = o[3666] | 0;
            do {
              if ((q | 0) != 0) {
                H = o[3664] | 0;
                L = H + j | 0;
                if (L >>> 0 <= H >>> 0 | L >>> 0 > q >>> 0) {
                  _ = 0
                } else {
                  break
                }
                return _ | 0
              }
            } while (0);
            e: do {
              if ((o[3667] & 4 | 0) == 0) {
                q = o[3562] | 0;
                r: do {
                  if ((q | 0) == 0) {
                    X = 2218
                  } else {
                    L = q;
                    H = 14672;
                    while (1) {
                      K = H | 0;
                      B = o[K >> 2] | 0;
                      if (B >>> 0 <= L >>> 0) {
                        Y = H + 4 | 0;
                        if ((B + (o[Y >> 2] | 0) | 0) >>> 0 > L >>> 0) {
                          break
                        }
                      }
                      B = o[H + 8 >> 2] | 0;
                      if ((B | 0) == 0) {
                        X = 2218;
                        break r
                      } else {
                        H = B
                      }
                    }
                    if ((H | 0) == 0) {
                      X = 2218;
                      break
                    }
                    L = V - (o[3559] | 0) & z;
                    if (L >>> 0 >= 2147483647 >>> 0) {
                      W = 0;
                      break
                    }
                    d = He(L | 0) | 0;
                    n = (d | 0) == ((o[K >> 2] | 0) + (o[Y >> 2] | 0) | 0);
                    G = n ? d : -1;
                    Q = n ? L : 0;
                    Z = d;
                    J = L;
                    X = 2227
                  }
                } while (0);
                do {
                  if ((X | 0) == 2218) {
                    q = He(0) | 0;
                    if ((q | 0) == -1) {
                      W = 0;
                      break
                    }
                    a = q;
                    L = o[3549] | 0;
                    d = L - 1 | 0;
                    if ((d & a | 0) == 0) {
                      $ = j
                    } else {
                      $ = j - a + (d + a & -L) | 0
                    }
                    L = o[3664] | 0;
                    a = L + $ | 0;
                    if (!($ >>> 0 > h >>> 0 & $ >>> 0 < 2147483647 >>> 0)) {
                      W = 0;
                      break
                    }
                    d = o[3666] | 0;
                    if ((d | 0) != 0) {
                      if (a >>> 0 <= L >>> 0 | a >>> 0 > d >>> 0) {
                        W = 0;
                        break
                      }
                    }
                    d = He($ | 0) | 0;
                    a = (d | 0) == (q | 0);
                    G = a ? q : -1;
                    Q = a ? $ : 0;
                    Z = d;
                    J = $;
                    X = 2227
                  }
                } while (0);
                r: do {
                  if ((X | 0) == 2227) {
                    d = -J | 0;
                    if ((G | 0) != -1) {
                      ee = Q;
                      re = G;
                      X = 2238;
                      break e
                    }
                    do {
                      if ((Z | 0) != -1 & J >>> 0 < 2147483647 >>> 0 & J >>> 0 < D >>> 0) {
                        a = o[3550] | 0;
                        q = I - J + a & -a;
                        if (q >>> 0 >= 2147483647 >>> 0) {
                          te = J;
                          break
                        }
                        if ((He(q | 0) | 0) == -1) {
                          He(d | 0) | 0;
                          W = Q;
                          break r
                        } else {
                          te = q + J | 0;
                          break
                        }
                      } else {
                        te = J
                      }
                    } while (0);
                    if ((Z | 0) == -1) {
                      W = Q
                    } else {
                      ee = te;
                      re = Z;
                      X = 2238;
                      break e
                    }
                  }
                } while (0);
                o[3667] = o[3667] | 4;
                ne = W;
                X = 2235
              } else {
                ne = 0;
                X = 2235
              }
            } while (0);
            do {
              if ((X | 0) == 2235) {
                if (j >>> 0 >= 2147483647 >>> 0) {
                  break
                }
                W = He(j | 0) | 0;
                Z = He(0) | 0;
                if (!((Z | 0) != -1 & (W | 0) != -1 & W >>> 0 < Z >>> 0)) {
                  break
                }
                te = Z - W | 0;
                Z = te >>> 0 > (h + 40 | 0) >>> 0;
                Q = Z ? W : -1;
                if ((Q | 0) != -1) {
                  ee = Z ? te : ne;
                  re = Q;
                  X = 2238
                }
              }
            } while (0);
            do {
              if ((X | 0) == 2238) {
                ne = (o[3664] | 0) + ee | 0;
                o[3664] = ne;
                if (ne >>> 0 > (o[3665] | 0) >>> 0) {
                  o[3665] = ne
                }
                ne = o[3562] | 0;
                e: do {
                  if ((ne | 0) == 0) {
                    j = o[3560] | 0;
                    if ((j | 0) == 0 | re >>> 0 < j >>> 0) {
                      o[3560] = re
                    }
                    o[3668] = re;
                    o[3669] = ee;
                    o[3671] = 0;
                    o[3565] = o[3548];
                    o[3564] = -1;
                    j = 0;
                    do {
                      Q = j << 1;
                      te = 14264 + (Q << 2) | 0;
                      o[14264 + (Q + 3 << 2) >> 2] = te;
                      o[14264 + (Q + 2 << 2) >> 2] = te;
                      j = j + 1 | 0
                    } while (j >>> 0 < 32 >>> 0);
                    j = re + 8 | 0;
                    if ((j & 7 | 0) == 0) {
                      ie = 0
                    } else {
                      ie = -j & 7
                    }
                    j = ee - 40 - ie | 0;
                    o[3562] = re + ie;
                    o[3559] = j;
                    o[re + (ie + 4) >> 2] = j | 1;
                    o[re + (ee - 36) >> 2] = 40;
                    o[3563] = o[3552]
                  } else {
                    j = 14672;
                    while (1) {
                      oe = o[j >> 2] | 0;
                      ae = j + 4 | 0;
                      se = o[ae >> 2] | 0;
                      if ((re | 0) == (oe + se | 0)) {
                        X = 2250;
                        break
                      }
                      te = o[j + 8 >> 2] | 0;
                      if ((te | 0) == 0) {
                        break
                      } else {
                        j = te
                      }
                    }
                    do {
                      if ((X | 0) == 2250) {
                        if ((o[j + 12 >> 2] & 8 | 0) != 0) {
                          break
                        }
                        te = ne;
                        if (!(te >>> 0 >= oe >>> 0 & te >>> 0 < re >>> 0)) {
                          break
                        }
                        o[ae >> 2] = se + ee;
                        te = o[3562] | 0;
                        Q = (o[3559] | 0) + ee | 0;
                        Z = te;
                        W = te + 8 | 0;
                        if ((W & 7 | 0) == 0) {
                          le = 0
                        } else {
                          le = -W & 7
                        }
                        W = Q - le | 0;
                        o[3562] = Z + le;
                        o[3559] = W;
                        o[Z + (le + 4) >> 2] = W | 1;
                        o[Z + (Q + 4) >> 2] = 40;
                        o[3563] = o[3552];
                        break e
                      }
                    } while (0);
                    if (re >>> 0 < (o[3560] | 0) >>> 0) {
                      o[3560] = re
                    }
                    j = re + ee | 0;
                    Q = 14672;
                    while (1) {
                      ue = Q | 0;
                      if ((o[ue >> 2] | 0) == (j | 0)) {
                        X = 2260;
                        break
                      }
                      Z = o[Q + 8 >> 2] | 0;
                      if ((Z | 0) == 0) {
                        break
                      } else {
                        Q = Z
                      }
                    }
                    do {
                      if ((X | 0) == 2260) {
                        if ((o[Q + 12 >> 2] & 8 | 0) != 0) {
                          break
                        }
                        o[ue >> 2] = re;
                        j = Q + 4 | 0;
                        o[j >> 2] = (o[j >> 2] | 0) + ee;
                        j = re + 8 | 0;
                        if ((j & 7 | 0) == 0) {
                          ce = 0
                        } else {
                          ce = -j & 7
                        }
                        j = re + (ee + 8) | 0;
                        if ((j & 7 | 0) == 0) {
                          fe = 0
                        } else {
                          fe = -j & 7
                        }
                        j = re + (fe + ee) | 0;
                        Z = j;
                        W = ce + h | 0;
                        te = re + W | 0;
                        J = te;
                        I = j - (re + ce) - h | 0;
                        o[re + (ce + 4) >> 2] = h | 3;
                        do {
                          if ((Z | 0) == (o[3562] | 0)) {
                            D = (o[3559] | 0) + I | 0;
                            o[3559] = D;
                            o[3562] = J;
                            o[re + (W + 4) >> 2] = D | 1
                          } else {
                            if ((Z | 0) == (o[3561] | 0)) {
                              D = (o[3558] | 0) + I | 0;
                              o[3558] = D;
                              o[3561] = J;
                              o[re + (W + 4) >> 2] = D | 1;
                              o[re + (D + W) >> 2] = D;
                              break
                            }
                            D = ee + 4 | 0;
                            G = o[re + (D + fe) >> 2] | 0;
                            if ((G & 3 | 0) == 1) {
                              $ = G & -8;
                              Y = G >>> 3;
                              r: do {
                                if (G >>> 0 < 256 >>> 0) {
                                  K = o[re + ((fe | 8) + ee) >> 2] | 0;
                                  z = o[re + (ee + 12 + fe) >> 2] | 0;
                                  V = 14264 + (Y << 1 << 2) | 0;
                                  do {
                                    if ((K | 0) != (V | 0)) {
                                      if (K >>> 0 < (o[3560] | 0) >>> 0) {
                                        Se();
                                        return 0
                                      }
                                      if ((o[K + 12 >> 2] | 0) == (Z | 0)) {
                                        break
                                      }
                                      Se();
                                      return 0
                                    }
                                  } while (0);
                                  if ((z | 0) == (K | 0)) {
                                    o[3556] = o[3556] & ~(1 << Y);
                                    break
                                  }
                                  do {
                                    if ((z | 0) == (V | 0)) {
                                      de = z + 8 | 0
                                    } else {
                                      if (z >>> 0 < (o[3560] | 0) >>> 0) {
                                        Se();
                                        return 0
                                      }
                                      d = z + 8 | 0;
                                      if ((o[d >> 2] | 0) == (Z | 0)) {
                                        de = d;
                                        break
                                      }
                                      Se();
                                      return 0
                                    }
                                  } while (0);
                                  o[K + 12 >> 2] = z;
                                  o[de >> 2] = K
                                } else {
                                  V = j;
                                  d = o[re + ((fe | 24) + ee) >> 2] | 0;
                                  H = o[re + (ee + 12 + fe) >> 2] | 0;
                                  do {
                                    if ((H | 0) == (V | 0)) {
                                      q = fe | 16;
                                      a = re + (D + q) | 0;
                                      L = o[a >> 2] | 0;
                                      if ((L | 0) == 0) {
                                        n = re + (q + ee) | 0;
                                        q = o[n >> 2] | 0;
                                        if ((q | 0) == 0) {
                                          _e = 0;
                                          break
                                        } else {
                                          he = q;
                                          pe = n
                                        }
                                      } else {
                                        he = L;
                                        pe = a
                                      }
                                      while (1) {
                                        a = he + 20 | 0;
                                        L = o[a >> 2] | 0;
                                        if ((L | 0) != 0) {
                                          he = L;
                                          pe = a;
                                          continue
                                        }
                                        a = he + 16 | 0;
                                        L = o[a >> 2] | 0;
                                        if ((L | 0) == 0) {
                                          break
                                        } else {
                                          he = L;
                                          pe = a
                                        }
                                      }
                                      if (pe >>> 0 < (o[3560] | 0) >>> 0) {
                                        Se();
                                        return 0
                                      } else {
                                        o[pe >> 2] = 0;
                                        _e = he;
                                        break
                                      }
                                    } else {
                                      a = o[re + ((fe | 8) + ee) >> 2] | 0;
                                      if (a >>> 0 < (o[3560] | 0) >>> 0) {
                                        Se();
                                        return 0
                                      }
                                      L = a + 12 | 0;
                                      if ((o[L >> 2] | 0) != (V | 0)) {
                                        Se();
                                        return 0
                                      }
                                      n = H + 8 | 0;
                                      if ((o[n >> 2] | 0) == (V | 0)) {
                                        o[L >> 2] = H;
                                        o[n >> 2] = a;
                                        _e = H;
                                        break
                                      } else {
                                        Se();
                                        return 0
                                      }
                                    }
                                  } while (0);
                                  if ((d | 0) == 0) {
                                    break
                                  }
                                  H = re + (ee + 28 + fe) | 0;
                                  K = 14528 + (o[H >> 2] << 2) | 0;
                                  do {
                                    if ((V | 0) == (o[K >> 2] | 0)) {
                                      o[K >> 2] = _e;
                                      if ((_e | 0) != 0) {
                                        break
                                      }
                                      o[3557] = o[3557] & ~(1 << o[H >> 2]);
                                      break r
                                    } else {
                                      if (d >>> 0 < (o[3560] | 0) >>> 0) {
                                        Se();
                                        return 0
                                      }
                                      z = d + 16 | 0;
                                      if ((o[z >> 2] | 0) == (V | 0)) {
                                        o[z >> 2] = _e
                                      } else {
                                        o[d + 20 >> 2] = _e
                                      }
                                      if ((_e | 0) == 0) {
                                        break r
                                      }
                                    }
                                  } while (0);
                                  if (_e >>> 0 < (o[3560] | 0) >>> 0) {
                                    Se();
                                    return 0
                                  }
                                  o[_e + 24 >> 2] = d;
                                  V = fe | 16;
                                  H = o[re + (V + ee) >> 2] | 0;
                                  do {
                                    if ((H | 0) != 0) {
                                      if (H >>> 0 < (o[3560] | 0) >>> 0) {
                                        Se();
                                        return 0
                                      } else {
                                        o[_e + 16 >> 2] = H;
                                        o[H + 24 >> 2] = _e;
                                        break
                                      }
                                    }
                                  } while (0);
                                  H = o[re + (D + V) >> 2] | 0;
                                  if ((H | 0) == 0) {
                                    break
                                  }
                                  if (H >>> 0 < (o[3560] | 0) >>> 0) {
                                    Se();
                                    return 0
                                  } else {
                                    o[_e + 20 >> 2] = H;
                                    o[H + 24 >> 2] = _e;
                                    break
                                  }
                                }
                              } while (0);
                              me = re + (($ | fe) + ee) | 0;
                              we = $ + I | 0
                            } else {
                              me = Z;
                              we = I
                            }
                            D = me + 4 | 0;
                            o[D >> 2] = o[D >> 2] & -2;
                            o[re + (W + 4) >> 2] = we | 1;
                            o[re + (we + W) >> 2] = we;
                            D = we >>> 3;
                            if (we >>> 0 < 256 >>> 0) {
                              Y = D << 1;
                              G = 14264 + (Y << 2) | 0;
                              H = o[3556] | 0;
                              d = 1 << D;
                              do {
                                if ((H & d | 0) == 0) {
                                  o[3556] = H | d;
                                  be = G;
                                  Ee = 14264 + (Y + 2 << 2) | 0
                                } else {
                                  D = 14264 + (Y + 2 << 2) | 0;
                                  K = o[D >> 2] | 0;
                                  if (K >>> 0 >= (o[3560] | 0) >>> 0) {
                                    be = K;
                                    Ee = D;
                                    break
                                  }
                                  Se();
                                  return 0
                                }
                              } while (0);
                              o[Ee >> 2] = J;
                              o[be + 12 >> 2] = J;
                              o[re + (W + 8) >> 2] = be;
                              o[re + (W + 12) >> 2] = G;
                              break
                            }
                            Y = te;
                            d = we >>> 8;
                            do {
                              if ((d | 0) == 0) {
                                ve = 0
                              } else {
                                if (we >>> 0 > 16777215 >>> 0) {
                                  ve = 31;
                                  break
                                }
                                H = (d + 1048320 | 0) >>> 16 & 8;
                                $ = d << H;
                                D = ($ + 520192 | 0) >>> 16 & 4;
                                K = $ << D;
                                $ = (K + 245760 | 0) >>> 16 & 2;
                                z = 14 - (D | H | $) + (K << $ >>> 15) | 0;
                                ve = we >>> ((z + 7 | 0) >>> 0) & 1 | z << 1
                              }
                            } while (0);
                            d = 14528 + (ve << 2) | 0;
                            o[re + (W + 28) >> 2] = ve;
                            o[re + (W + 20) >> 2] = 0;
                            o[re + (W + 16) >> 2] = 0;
                            G = o[3557] | 0;
                            z = 1 << ve;
                            if ((G & z | 0) == 0) {
                              o[3557] = G | z;
                              o[d >> 2] = Y;
                              o[re + (W + 24) >> 2] = d;
                              o[re + (W + 12) >> 2] = Y;
                              o[re + (W + 8) >> 2] = Y;
                              break
                            }
                            if ((ve | 0) == 31) {
                              ke = 0
                            } else {
                              ke = 25 - (ve >>> 1) | 0
                            }
                            z = we << ke;
                            G = o[d >> 2] | 0;
                            while (1) {
                              if ((o[G + 4 >> 2] & -8 | 0) == (we | 0)) {
                                break
                              }
                              ge = G + 16 + (z >>> 31 << 2) | 0;
                              d = o[ge >> 2] | 0;
                              if ((d | 0) == 0) {
                                X = 2333;
                                break
                              } else {
                                z = z << 1;
                                G = d
                              }
                            }
                            if ((X | 0) == 2333) {
                              if (ge >>> 0 < (o[3560] | 0) >>> 0) {
                                Se();
                                return 0
                              } else {
                                o[ge >> 2] = Y;
                                o[re + (W + 24) >> 2] = G;
                                o[re + (W + 12) >> 2] = Y;
                                o[re + (W + 8) >> 2] = Y;
                                break
                              }
                            }
                            z = G + 8 | 0;
                            d = o[z >> 2] | 0;
                            $ = o[3560] | 0;
                            if (G >>> 0 < $ >>> 0) {
                              Se();
                              return 0
                            }
                            if (d >>> 0 < $ >>> 0) {
                              Se();
                              return 0
                            } else {
                              o[d + 12 >> 2] = Y;
                              o[z >> 2] = Y;
                              o[re + (W + 8) >> 2] = d;
                              o[re + (W + 12) >> 2] = G;
                              o[re + (W + 24) >> 2] = 0;
                              break
                            }
                          }
                        } while (0);
                        _ = re + (ce | 8) | 0;
                        return _ | 0
                      }
                    } while (0);
                    Q = ne;
                    W = 14672;
                    while (1) {
                      ye = o[W >> 2] | 0;
                      if (ye >>> 0 <= Q >>> 0) {
                        Me = o[W + 4 >> 2] | 0;
                        Fe = ye + Me | 0;
                        if (Fe >>> 0 > Q >>> 0) {
                          break
                        }
                      }
                      W = o[W + 8 >> 2] | 0
                    }
                    W = ye + (Me - 39) | 0;
                    if ((W & 7 | 0) == 0) {
                      Ae = 0
                    } else {
                      Ae = -W & 7
                    }
                    W = ye + (Me - 47 + Ae) | 0;
                    te = W >>> 0 < (ne + 16 | 0) >>> 0 ? Q : W;
                    W = te + 8 | 0;
                    J = re + 8 | 0;
                    if ((J & 7 | 0) == 0) {
                      Te = 0
                    } else {
                      Te = -J & 7
                    }
                    J = ee - 40 - Te | 0;
                    o[3562] = re + Te;
                    o[3559] = J;
                    o[re + (Te + 4) >> 2] = J | 1;
                    o[re + (ee - 36) >> 2] = 40;
                    o[3563] = o[3552];
                    o[te + 4 >> 2] = 27;
                    o[W >> 2] = o[3668];
                    o[W + 4 >> 2] = o[3669];
                    o[W + 8 >> 2] = o[3670];
                    o[W + 12 >> 2] = o[3671];
                    o[3668] = re;
                    o[3669] = ee;
                    o[3671] = 0;
                    o[3670] = W;
                    W = te + 28 | 0;
                    o[W >> 2] = 7;
                    if ((te + 32 | 0) >>> 0 < Fe >>> 0) {
                      J = W;
                      while (1) {
                        W = J + 4 | 0;
                        o[W >> 2] = 7;
                        if ((J + 8 | 0) >>> 0 < Fe >>> 0) {
                          J = W
                        } else {
                          break
                        }
                      }
                    }
                    if ((te | 0) == (Q | 0)) {
                      break
                    }
                    J = te - ne | 0;
                    W = Q + (J + 4) | 0;
                    o[W >> 2] = o[W >> 2] & -2;
                    o[ne + 4 >> 2] = J | 1;
                    o[Q + J >> 2] = J;
                    W = J >>> 3;
                    if (J >>> 0 < 256 >>> 0) {
                      I = W << 1;
                      Z = 14264 + (I << 2) | 0;
                      j = o[3556] | 0;
                      d = 1 << W;
                      do {
                        if ((j & d | 0) == 0) {
                          o[3556] = j | d;
                          Oe = Z;
                          Re = 14264 + (I + 2 << 2) | 0
                        } else {
                          W = 14264 + (I + 2 << 2) | 0;
                          z = o[W >> 2] | 0;
                          if (z >>> 0 >= (o[3560] | 0) >>> 0) {
                            Oe = z;
                            Re = W;
                            break
                          }
                          Se();
                          return 0
                        }
                      } while (0);
                      o[Re >> 2] = ne;
                      o[Oe + 12 >> 2] = ne;
                      o[ne + 8 >> 2] = Oe;
                      o[ne + 12 >> 2] = Z;
                      break
                    }
                    I = ne;
                    d = J >>> 8;
                    do {
                      if ((d | 0) == 0) {
                        Ce = 0
                      } else {
                        if (J >>> 0 > 16777215 >>> 0) {
                          Ce = 31;
                          break
                        }
                        j = (d + 1048320 | 0) >>> 16 & 8;
                        Q = d << j;
                        te = (Q + 520192 | 0) >>> 16 & 4;
                        W = Q << te;
                        Q = (W + 245760 | 0) >>> 16 & 2;
                        z = 14 - (te | j | Q) + (W << Q >>> 15) | 0;
                        Ce = J >>> ((z + 7 | 0) >>> 0) & 1 | z << 1
                      }
                    } while (0);
                    d = 14528 + (Ce << 2) | 0;
                    o[ne + 28 >> 2] = Ce;
                    o[ne + 20 >> 2] = 0;
                    o[ne + 16 >> 2] = 0;
                    Z = o[3557] | 0;
                    z = 1 << Ce;
                    if ((Z & z | 0) == 0) {
                      o[3557] = Z | z;
                      o[d >> 2] = I;
                      o[ne + 24 >> 2] = d;
                      o[ne + 12 >> 2] = ne;
                      o[ne + 8 >> 2] = ne;
                      break
                    }
                    if ((Ce | 0) == 31) {
                      Ne = 0
                    } else {
                      Ne = 25 - (Ce >>> 1) | 0
                    }
                    z = J << Ne;
                    Z = o[d >> 2] | 0;
                    while (1) {
                      if ((o[Z + 4 >> 2] & -8 | 0) == (J | 0)) {
                        break
                      }
                      Pe = Z + 16 + (z >>> 31 << 2) | 0;
                      d = o[Pe >> 2] | 0;
                      if ((d | 0) == 0) {
                        X = 2368;
                        break
                      } else {
                        z = z << 1;
                        Z = d
                      }
                    }
                    if ((X | 0) == 2368) {
                      if (Pe >>> 0 < (o[3560] | 0) >>> 0) {
                        Se();
                        return 0
                      } else {
                        o[Pe >> 2] = I;
                        o[ne + 24 >> 2] = Z;
                        o[ne + 12 >> 2] = ne;
                        o[ne + 8 >> 2] = ne;
                        break
                      }
                    }
                    z = Z + 8 | 0;
                    J = o[z >> 2] | 0;
                    d = o[3560] | 0;
                    if (Z >>> 0 < d >>> 0) {
                      Se();
                      return 0
                    }
                    if (J >>> 0 < d >>> 0) {
                      Se();
                      return 0
                    } else {
                      o[J + 12 >> 2] = I;
                      o[z >> 2] = I;
                      o[ne + 8 >> 2] = J;
                      o[ne + 12 >> 2] = Z;
                      o[ne + 24 >> 2] = 0;
                      break
                    }
                  }
                } while (0);
                ne = o[3559] | 0;
                if (ne >>> 0 <= h >>> 0) {
                  break
                }
                J = ne - h | 0;
                o[3559] = J;
                ne = o[3562] | 0;
                z = ne;
                o[3562] = z + h;
                o[z + (h + 4) >> 2] = J | 1;
                o[ne + 4 >> 2] = h | 3;
                _ = ne + 8 | 0;
                return _ | 0
              }
            } while (0);
            o[(Ve() | 0) >> 2] = 12;
            _ = 0;
            return _ | 0
          }
          function Rn(e) {
            e = e | 0;
            var r = 0,
              t = 0,
              n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              f = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0,
              y = 0,
              M = 0,
              F = 0,
              A = 0,
              T = 0,
              O = 0,
              R = 0,
              C = 0,
              N = 0,
              P = 0,
              x = 0,
              D = 0,
              I = 0,
              L = 0,
              B = 0,
              U = 0,
              q = 0;
            if ((e | 0) == 0) {
              return
            }
            r = e - 8 | 0;
            t = r;
            n = o[3560] | 0;
            if (r >>> 0 < n >>> 0) {
              Se()
            }
            i = o[e - 4 >> 2] | 0;
            a = i & 3;
            if ((a | 0) == 1) {
              Se()
            }
            s = i & -8;
            l = e + (s - 8) | 0;
            u = l;
            e: do {
              if ((i & 1 | 0) == 0) {
                c = o[r >> 2] | 0;
                if ((a | 0) == 0) {
                  return
                }
                f = -8 - c | 0;
                d = e + f | 0;
                _ = d;
                h = c + s | 0;
                if (d >>> 0 < n >>> 0) {
                  Se()
                }
                if ((_ | 0) == (o[3561] | 0)) {
                  p = e + (s - 4) | 0;
                  if ((o[p >> 2] & 3 | 0) != 3) {
                    m = _;
                    w = h;
                    break
                  }
                  o[3558] = h;
                  o[p >> 2] = o[p >> 2] & -2;
                  o[e + (f + 4) >> 2] = h | 1;
                  o[l >> 2] = h;
                  return
                }
                p = c >>> 3;
                if (c >>> 0 < 256 >>> 0) {
                  c = o[e + (f + 8) >> 2] | 0;
                  b = o[e + (f + 12) >> 2] | 0;
                  E = 14264 + (p << 1 << 2) | 0;
                  do {
                    if ((c | 0) != (E | 0)) {
                      if (c >>> 0 < n >>> 0) {
                        Se()
                      }
                      if ((o[c + 12 >> 2] | 0) == (_ | 0)) {
                        break
                      }
                      Se()
                    }
                  } while (0);
                  if ((b | 0) == (c | 0)) {
                    o[3556] = o[3556] & ~(1 << p);
                    m = _;
                    w = h;
                    break
                  }
                  do {
                    if ((b | 0) == (E | 0)) {
                      S = b + 8 | 0
                    } else {
                      if (b >>> 0 < n >>> 0) {
                        Se()
                      }
                      v = b + 8 | 0;
                      if ((o[v >> 2] | 0) == (_ | 0)) {
                        S = v;
                        break
                      }
                      Se()
                    }
                  } while (0);
                  o[c + 12 >> 2] = b;
                  o[S >> 2] = c;
                  m = _;
                  w = h;
                  break
                }
                E = d;
                p = o[e + (f + 24) >> 2] | 0;
                v = o[e + (f + 12) >> 2] | 0;
                do {
                  if ((v | 0) == (E | 0)) {
                    k = e + (f + 20) | 0;
                    g = o[k >> 2] | 0;
                    if ((g | 0) == 0) {
                      y = e + (f + 16) | 0;
                      M = o[y >> 2] | 0;
                      if ((M | 0) == 0) {
                        F = 0;
                        break
                      } else {
                        A = M;
                        T = y
                      }
                    } else {
                      A = g;
                      T = k
                    }
                    while (1) {
                      k = A + 20 | 0;
                      g = o[k >> 2] | 0;
                      if ((g | 0) != 0) {
                        A = g;
                        T = k;
                        continue
                      }
                      k = A + 16 | 0;
                      g = o[k >> 2] | 0;
                      if ((g | 0) == 0) {
                        break
                      } else {
                        A = g;
                        T = k
                      }
                    }
                    if (T >>> 0 < n >>> 0) {
                      Se()
                    } else {
                      o[T >> 2] = 0;
                      F = A;
                      break
                    }
                  } else {
                    k = o[e + (f + 8) >> 2] | 0;
                    if (k >>> 0 < n >>> 0) {
                      Se()
                    }
                    g = k + 12 | 0;
                    if ((o[g >> 2] | 0) != (E | 0)) {
                      Se()
                    }
                    y = v + 8 | 0;
                    if ((o[y >> 2] | 0) == (E | 0)) {
                      o[g >> 2] = v;
                      o[y >> 2] = k;
                      F = v;
                      break
                    } else {
                      Se()
                    }
                  }
                } while (0);
                if ((p | 0) == 0) {
                  m = _;
                  w = h;
                  break
                }
                v = e + (f + 28) | 0;
                d = 14528 + (o[v >> 2] << 2) | 0;
                do {
                  if ((E | 0) == (o[d >> 2] | 0)) {
                    o[d >> 2] = F;
                    if ((F | 0) != 0) {
                      break
                    }
                    o[3557] = o[3557] & ~(1 << o[v >> 2]);
                    m = _;
                    w = h;
                    break e
                  } else {
                    if (p >>> 0 < (o[3560] | 0) >>> 0) {
                      Se()
                    }
                    c = p + 16 | 0;
                    if ((o[c >> 2] | 0) == (E | 0)) {
                      o[c >> 2] = F
                    } else {
                      o[p + 20 >> 2] = F
                    }
                    if ((F | 0) == 0) {
                      m = _;
                      w = h;
                      break e
                    }
                  }
                } while (0);
                if (F >>> 0 < (o[3560] | 0) >>> 0) {
                  Se()
                }
                o[F + 24 >> 2] = p;
                E = o[e + (f + 16) >> 2] | 0;
                do {
                  if ((E | 0) != 0) {
                    if (E >>> 0 < (o[3560] | 0) >>> 0) {
                      Se()
                    } else {
                      o[F + 16 >> 2] = E;
                      o[E + 24 >> 2] = F;
                      break
                    }
                  }
                } while (0);
                E = o[e + (f + 20) >> 2] | 0;
                if ((E | 0) == 0) {
                  m = _;
                  w = h;
                  break
                }
                if (E >>> 0 < (o[3560] | 0) >>> 0) {
                  Se()
                } else {
                  o[F + 20 >> 2] = E;
                  o[E + 24 >> 2] = F;
                  m = _;
                  w = h;
                  break
                }
              } else {
                m = t;
                w = s
              }
            } while (0);
            t = m;
            if (t >>> 0 >= l >>> 0) {
              Se()
            }
            F = e + (s - 4) | 0;
            n = o[F >> 2] | 0;
            if ((n & 1 | 0) == 0) {
              Se()
            }
            do {
              if ((n & 2 | 0) == 0) {
                if ((u | 0) == (o[3562] | 0)) {
                  A = (o[3559] | 0) + w | 0;
                  o[3559] = A;
                  o[3562] = m;
                  o[m + 4 >> 2] = A | 1;
                  if ((m | 0) != (o[3561] | 0)) {
                    return
                  }
                  o[3561] = 0;
                  o[3558] = 0;
                  return
                }
                if ((u | 0) == (o[3561] | 0)) {
                  A = (o[3558] | 0) + w | 0;
                  o[3558] = A;
                  o[3561] = m;
                  o[m + 4 >> 2] = A | 1;
                  o[t + A >> 2] = A;
                  return
                }
                A = (n & -8) + w | 0;
                T = n >>> 3;
                e: do {
                  if (n >>> 0 < 256 >>> 0) {
                    S = o[e + s >> 2] | 0;
                    a = o[e + (s | 4) >> 2] | 0;
                    r = 14264 + (T << 1 << 2) | 0;
                    do {
                      if ((S | 0) != (r | 0)) {
                        if (S >>> 0 < (o[3560] | 0) >>> 0) {
                          Se()
                        }
                        if ((o[S + 12 >> 2] | 0) == (u | 0)) {
                          break
                        }
                        Se()
                      }
                    } while (0);
                    if ((a | 0) == (S | 0)) {
                      o[3556] = o[3556] & ~(1 << T);
                      break
                    }
                    do {
                      if ((a | 0) == (r | 0)) {
                        O = a + 8 | 0
                      } else {
                        if (a >>> 0 < (o[3560] | 0) >>> 0) {
                          Se()
                        }
                        i = a + 8 | 0;
                        if ((o[i >> 2] | 0) == (u | 0)) {
                          O = i;
                          break
                        }
                        Se()
                      }
                    } while (0);
                    o[S + 12 >> 2] = a;
                    o[O >> 2] = S
                  } else {
                    r = l;
                    i = o[e + (s + 16) >> 2] | 0;
                    E = o[e + (s | 4) >> 2] | 0;
                    do {
                      if ((E | 0) == (r | 0)) {
                        p = e + (s + 12) | 0;
                        v = o[p >> 2] | 0;
                        if ((v | 0) == 0) {
                          d = e + (s + 8) | 0;
                          c = o[d >> 2] | 0;
                          if ((c | 0) == 0) {
                            R = 0;
                            break
                          } else {
                            C = c;
                            N = d
                          }
                        } else {
                          C = v;
                          N = p
                        }
                        while (1) {
                          p = C + 20 | 0;
                          v = o[p >> 2] | 0;
                          if ((v | 0) != 0) {
                            C = v;
                            N = p;
                            continue
                          }
                          p = C + 16 | 0;
                          v = o[p >> 2] | 0;
                          if ((v | 0) == 0) {
                            break
                          } else {
                            C = v;
                            N = p
                          }
                        }
                        if (N >>> 0 < (o[3560] | 0) >>> 0) {
                          Se()
                        } else {
                          o[N >> 2] = 0;
                          R = C;
                          break
                        }
                      } else {
                        p = o[e + s >> 2] | 0;
                        if (p >>> 0 < (o[3560] | 0) >>> 0) {
                          Se()
                        }
                        v = p + 12 | 0;
                        if ((o[v >> 2] | 0) != (r | 0)) {
                          Se()
                        }
                        d = E + 8 | 0;
                        if ((o[d >> 2] | 0) == (r | 0)) {
                          o[v >> 2] = E;
                          o[d >> 2] = p;
                          R = E;
                          break
                        } else {
                          Se()
                        }
                      }
                    } while (0);
                    if ((i | 0) == 0) {
                      break
                    }
                    E = e + (s + 20) | 0;
                    S = 14528 + (o[E >> 2] << 2) | 0;
                    do {
                      if ((r | 0) == (o[S >> 2] | 0)) {
                        o[S >> 2] = R;
                        if ((R | 0) != 0) {
                          break
                        }
                        o[3557] = o[3557] & ~(1 << o[E >> 2]);
                        break e
                      } else {
                        if (i >>> 0 < (o[3560] | 0) >>> 0) {
                          Se()
                        }
                        a = i + 16 | 0;
                        if ((o[a >> 2] | 0) == (r | 0)) {
                          o[a >> 2] = R
                        } else {
                          o[i + 20 >> 2] = R
                        }
                        if ((R | 0) == 0) {
                          break e
                        }
                      }
                    } while (0);
                    if (R >>> 0 < (o[3560] | 0) >>> 0) {
                      Se()
                    }
                    o[R + 24 >> 2] = i;
                    r = o[e + (s + 8) >> 2] | 0;
                    do {
                      if ((r | 0) != 0) {
                        if (r >>> 0 < (o[3560] | 0) >>> 0) {
                          Se()
                        } else {
                          o[R + 16 >> 2] = r;
                          o[r + 24 >> 2] = R;
                          break
                        }
                      }
                    } while (0);
                    r = o[e + (s + 12) >> 2] | 0;
                    if ((r | 0) == 0) {
                      break
                    }
                    if (r >>> 0 < (o[3560] | 0) >>> 0) {
                      Se()
                    } else {
                      o[R + 20 >> 2] = r;
                      o[r + 24 >> 2] = R;
                      break
                    }
                  }
                } while (0);
                o[m + 4 >> 2] = A | 1;
                o[t + A >> 2] = A;
                if ((m | 0) != (o[3561] | 0)) {
                  P = A;
                  break
                }
                o[3558] = A;
                return
              } else {
                o[F >> 2] = n & -2;
                o[m + 4 >> 2] = w | 1;
                o[t + w >> 2] = w;
                P = w
              }
            } while (0);
            w = P >>> 3;
            if (P >>> 0 < 256 >>> 0) {
              t = w << 1;
              n = 14264 + (t << 2) | 0;
              F = o[3556] | 0;
              R = 1 << w;
              do {
                if ((F & R | 0) == 0) {
                  o[3556] = F | R;
                  x = n;
                  D = 14264 + (t + 2 << 2) | 0
                } else {
                  w = 14264 + (t + 2 << 2) | 0;
                  s = o[w >> 2] | 0;
                  if (s >>> 0 >= (o[3560] | 0) >>> 0) {
                    x = s;
                    D = w;
                    break
                  }
                  Se()
                }
              } while (0);
              o[D >> 2] = m;
              o[x + 12 >> 2] = m;
              o[m + 8 >> 2] = x;
              o[m + 12 >> 2] = n;
              return
            }
            n = m;
            x = P >>> 8;
            do {
              if ((x | 0) == 0) {
                I = 0
              } else {
                if (P >>> 0 > 16777215 >>> 0) {
                  I = 31;
                  break
                }
                D = (x + 1048320 | 0) >>> 16 & 8;
                t = x << D;
                R = (t + 520192 | 0) >>> 16 & 4;
                F = t << R;
                t = (F + 245760 | 0) >>> 16 & 2;
                w = 14 - (R | D | t) + (F << t >>> 15) | 0;
                I = P >>> ((w + 7 | 0) >>> 0) & 1 | w << 1
              }
            } while (0);
            x = 14528 + (I << 2) | 0;
            o[m + 28 >> 2] = I;
            o[m + 20 >> 2] = 0;
            o[m + 16 >> 2] = 0;
            w = o[3557] | 0;
            t = 1 << I;
            do {
              if ((w & t | 0) == 0) {
                o[3557] = w | t;
                o[x >> 2] = n;
                o[m + 24 >> 2] = x;
                o[m + 12 >> 2] = m;
                o[m + 8 >> 2] = m
              } else {
                if ((I | 0) == 31) {
                  L = 0
                } else {
                  L = 25 - (I >>> 1) | 0
                }
                F = P << L;
                D = o[x >> 2] | 0;
                while (1) {
                  if ((o[D + 4 >> 2] & -8 | 0) == (P | 0)) {
                    break
                  }
                  B = D + 16 + (F >>> 31 << 2) | 0;
                  R = o[B >> 2] | 0;
                  if ((R | 0) == 0) {
                    U = 2545;
                    break
                  } else {
                    F = F << 1;
                    D = R
                  }
                }
                if ((U | 0) == 2545) {
                  if (B >>> 0 < (o[3560] | 0) >>> 0) {
                    Se()
                  } else {
                    o[B >> 2] = n;
                    o[m + 24 >> 2] = D;
                    o[m + 12 >> 2] = m;
                    o[m + 8 >> 2] = m;
                    break
                  }
                }
                F = D + 8 | 0;
                A = o[F >> 2] | 0;
                R = o[3560] | 0;
                if (D >>> 0 < R >>> 0) {
                  Se()
                }
                if (A >>> 0 < R >>> 0) {
                  Se()
                } else {
                  o[A + 12 >> 2] = n;
                  o[F >> 2] = n;
                  o[m + 8 >> 2] = A;
                  o[m + 12 >> 2] = D;
                  o[m + 24 >> 2] = 0;
                  break
                }
              }
            } while (0);
            m = (o[3564] | 0) - 1 | 0;
            o[3564] = m;
            if ((m | 0) == 0) {
              q = 14680
            } else {
              return
            }
            while (1) {
              m = o[q >> 2] | 0;
              if ((m | 0) == 0) {
                break
              } else {
                q = m + 8 | 0
              }
            }
            o[3564] = -1;
            return
          }
          function Cn(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              n = 0;
            do {
              if ((e | 0) == 0) {
                t = 0
              } else {
                n = re(r, e) | 0;
                if ((r | e) >>> 0 <= 65535 >>> 0) {
                  t = n;
                  break
                }
                t = ((n >>> 0) / (e >>> 0) | 0 | 0) == (r | 0) ? n : -1
              }
            } while (0);
            r = On(t) | 0;
            if ((r | 0) == 0) {
              return r | 0
            }
            if ((o[r - 4 >> 2] & 3 | 0) == 0) {
              return r | 0
            }
            Jn(r | 0, 0, t | 0);
            return r | 0
          }
          function Nn(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              n = 0,
              i = 0,
              a = 0;
            if ((e | 0) == 0) {
              t = On(r) | 0;
              return t | 0
            }
            if (r >>> 0 > 4294967231 >>> 0) {
              o[(Ve() | 0) >> 2] = 12;
              t = 0;
              return t | 0
            }
            if (r >>> 0 < 11 >>> 0) {
              n = 16
            } else {
              n = r + 11 & -8
            }
            i = Pn(e - 8 | 0, n) | 0;
            if ((i | 0) != 0) {
              t = i + 8 | 0;
              return t | 0
            }
            i = On(r) | 0;
            if ((i | 0) == 0) {
              t = 0;
              return t | 0
            }
            n = o[e - 4 >> 2] | 0;
            a = (n & -8) - ((n & 3 | 0) == 0 ? 8 : 4) | 0;
            n = a >>> 0 < r >>> 0 ? a : r;
            Gn(i | 0, e | 0, n) | 0;
            Rn(e);
            t = i;
            return t | 0
          }
          function Pn(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              f = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0,
              y = 0,
              M = 0,
              F = 0;
            t = e + 4 | 0;
            n = o[t >> 2] | 0;
            i = n & -8;
            a = e;
            s = a + i | 0;
            l = s;
            u = o[3560] | 0;
            if (a >>> 0 < u >>> 0) {
              Se();
              return 0
            }
            c = n & 3;
            if (!((c | 0) != 1 & a >>> 0 < s >>> 0)) {
              Se();
              return 0
            }
            f = a + (i | 4) | 0;
            d = o[f >> 2] | 0;
            if ((d & 1 | 0) == 0) {
              Se();
              return 0
            }
            if ((c | 0) == 0) {
              if (r >>> 0 < 256 >>> 0) {
                _ = 0;
                return _ | 0
              }
              do {
                if (i >>> 0 >= (r + 4 | 0) >>> 0) {
                  if ((i - r | 0) >>> 0 > o[3550] << 1 >>> 0) {
                    break
                  } else {
                    _ = e
                  }
                  return _ | 0
                }
              } while (0);
              _ = 0;
              return _ | 0
            }
            if (i >>> 0 >= r >>> 0) {
              c = i - r | 0;
              if (c >>> 0 <= 15 >>> 0) {
                _ = e;
                return _ | 0
              }
              o[t >> 2] = n & 1 | r | 2;
              o[a + (r + 4) >> 2] = c | 3;
              o[f >> 2] = o[f >> 2] | 1;
              Wn(a + r | 0, c);
              _ = e;
              return _ | 0
            }
            if ((l | 0) == (o[3562] | 0)) {
              c = (o[3559] | 0) + i | 0;
              if (c >>> 0 <= r >>> 0) {
                _ = 0;
                return _ | 0
              }
              f = c - r | 0;
              o[t >> 2] = n & 1 | r | 2;
              o[a + (r + 4) >> 2] = f | 1;
              o[3562] = a + r;
              o[3559] = f;
              _ = e;
              return _ | 0
            }
            if ((l | 0) == (o[3561] | 0)) {
              f = (o[3558] | 0) + i | 0;
              if (f >>> 0 < r >>> 0) {
                _ = 0;
                return _ | 0
              }
              c = f - r | 0;
              if (c >>> 0 > 15 >>> 0) {
                o[t >> 2] = n & 1 | r | 2;
                o[a + (r + 4) >> 2] = c | 1;
                o[a + f >> 2] = c;
                h = a + (f + 4) | 0;
                o[h >> 2] = o[h >> 2] & -2;
                p = a + r | 0;
                m = c
              } else {
                o[t >> 2] = n & 1 | f | 2;
                n = a + (f + 4) | 0;
                o[n >> 2] = o[n >> 2] | 1;
                p = 0;
                m = 0
              }
              o[3558] = m;
              o[3561] = p;
              _ = e;
              return _ | 0
            }
            if ((d & 2 | 0) != 0) {
              _ = 0;
              return _ | 0
            }
            p = (d & -8) + i | 0;
            if (p >>> 0 < r >>> 0) {
              _ = 0;
              return _ | 0
            }
            m = p - r | 0;
            n = d >>> 3;
            e: do {
              if (d >>> 0 < 256 >>> 0) {
                f = o[a + (i + 8) >> 2] | 0;
                c = o[a + (i + 12) >> 2] | 0;
                h = 14264 + (n << 1 << 2) | 0;
                do {
                  if ((f | 0) != (h | 0)) {
                    if (f >>> 0 < u >>> 0) {
                      Se();
                      return 0
                    }
                    if ((o[f + 12 >> 2] | 0) == (l | 0)) {
                      break
                    }
                    Se();
                    return 0
                  }
                } while (0);
                if ((c | 0) == (f | 0)) {
                  o[3556] = o[3556] & ~(1 << n);
                  break
                }
                do {
                  if ((c | 0) == (h | 0)) {
                    w = c + 8 | 0
                  } else {
                    if (c >>> 0 < u >>> 0) {
                      Se();
                      return 0
                    }
                    b = c + 8 | 0;
                    if ((o[b >> 2] | 0) == (l | 0)) {
                      w = b;
                      break
                    }
                    Se();
                    return 0
                  }
                } while (0);
                o[f + 12 >> 2] = c;
                o[w >> 2] = f
              } else {
                h = s;
                b = o[a + (i + 24) >> 2] | 0;
                E = o[a + (i + 12) >> 2] | 0;
                do {
                  if ((E | 0) == (h | 0)) {
                    S = a + (i + 20) | 0;
                    v = o[S >> 2] | 0;
                    if ((v | 0) == 0) {
                      k = a + (i + 16) | 0;
                      g = o[k >> 2] | 0;
                      if ((g | 0) == 0) {
                        y = 0;
                        break
                      } else {
                        M = g;
                        F = k
                      }
                    } else {
                      M = v;
                      F = S
                    }
                    while (1) {
                      S = M + 20 | 0;
                      v = o[S >> 2] | 0;
                      if ((v | 0) != 0) {
                        M = v;
                        F = S;
                        continue
                      }
                      S = M + 16 | 0;
                      v = o[S >> 2] | 0;
                      if ((v | 0) == 0) {
                        break
                      } else {
                        M = v;
                        F = S
                      }
                    }
                    if (F >>> 0 < u >>> 0) {
                      Se();
                      return 0
                    } else {
                      o[F >> 2] = 0;
                      y = M;
                      break
                    }
                  } else {
                    S = o[a + (i + 8) >> 2] | 0;
                    if (S >>> 0 < u >>> 0) {
                      Se();
                      return 0
                    }
                    v = S + 12 | 0;
                    if ((o[v >> 2] | 0) != (h | 0)) {
                      Se();
                      return 0
                    }
                    k = E + 8 | 0;
                    if ((o[k >> 2] | 0) == (h | 0)) {
                      o[v >> 2] = E;
                      o[k >> 2] = S;
                      y = E;
                      break
                    } else {
                      Se();
                      return 0
                    }
                  }
                } while (0);
                if ((b | 0) == 0) {
                  break
                }
                E = a + (i + 28) | 0;
                f = 14528 + (o[E >> 2] << 2) | 0;
                do {
                  if ((h | 0) == (o[f >> 2] | 0)) {
                    o[f >> 2] = y;
                    if ((y | 0) != 0) {
                      break
                    }
                    o[3557] = o[3557] & ~(1 << o[E >> 2]);
                    break e
                  } else {
                    if (b >>> 0 < (o[3560] | 0) >>> 0) {
                      Se();
                      return 0
                    }
                    c = b + 16 | 0;
                    if ((o[c >> 2] | 0) == (h | 0)) {
                      o[c >> 2] = y
                    } else {
                      o[b + 20 >> 2] = y
                    }
                    if ((y | 0) == 0) {
                      break e
                    }
                  }
                } while (0);
                if (y >>> 0 < (o[3560] | 0) >>> 0) {
                  Se();
                  return 0
                }
                o[y + 24 >> 2] = b;
                h = o[a + (i + 16) >> 2] | 0;
                do {
                  if ((h | 0) != 0) {
                    if (h >>> 0 < (o[3560] | 0) >>> 0) {
                      Se();
                      return 0
                    } else {
                      o[y + 16 >> 2] = h;
                      o[h + 24 >> 2] = y;
                      break
                    }
                  }
                } while (0);
                h = o[a + (i + 20) >> 2] | 0;
                if ((h | 0) == 0) {
                  break
                }
                if (h >>> 0 < (o[3560] | 0) >>> 0) {
                  Se();
                  return 0
                } else {
                  o[y + 20 >> 2] = h;
                  o[h + 24 >> 2] = y;
                  break
                }
              }
            } while (0);
            if (m >>> 0 < 16 >>> 0) {
              o[t >> 2] = p | o[t >> 2] & 1 | 2;
              y = a + (p | 4) | 0;
              o[y >> 2] = o[y >> 2] | 1;
              _ = e;
              return _ | 0
            } else {
              o[t >> 2] = o[t >> 2] & 1 | r | 2;
              o[a + (r + 4) >> 2] = m | 3;
              t = a + (p | 4) | 0;
              o[t >> 2] = o[t >> 2] | 1;
              Wn(a + r | 0, m);
              _ = e;
              return _ | 0
            }
            return 0
          }
          function xn(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0;
            if (e >>> 0 < 9 >>> 0) {
              t = On(r) | 0;
              return t | 0
            } else {
              t = Dn(e, r) | 0;
              return t | 0
            }
            return 0
          }
          function Dn(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              f = 0,
              d = 0,
              _ = 0,
              h = 0;
            t = e >>> 0 < 16 >>> 0 ? 16 : e;
            if ((t - 1 & t | 0) == 0) {
              n = t
            } else {
              e = 16;
              while (1) {
                if (e >>> 0 < t >>> 0) {
                  e = e << 1
                } else {
                  n = e;
                  break
                }
              }
            }
            if ((- 64 - n | 0) >>> 0 <= r >>> 0) {
              o[(Ve() | 0) >> 2] = 12;
              i = 0;
              return i | 0
            }
            if (r >>> 0 < 11 >>> 0) {
              a = 16
            } else {
              a = r + 11 & -8
            }
            r = On(n + 12 + a | 0) | 0;
            if ((r | 0) == 0) {
              i = 0;
              return i | 0
            }
            e = r - 8 | 0;
            t = e;
            s = n - 1 | 0;
            do {
              if ((r & s | 0) == 0) {
                l = t
              } else {
                u = r + s & -n;
                c = u - 8 | 0;
                f = e;
                if ((c - f | 0) >>> 0 > 15 >>> 0) {
                  d = c
                } else {
                  d = u + (n - 8) | 0
                }
                u = d;
                c = d - f | 0;
                f = r - 4 | 0;
                _ = o[f >> 2] | 0;
                h = (_ & -8) - c | 0;
                if ((_ & 3 | 0) == 0) {
                  o[d >> 2] = (o[e >> 2] | 0) + c;
                  o[d + 4 >> 2] = h;
                  l = u;
                  break
                } else {
                  _ = d + 4 | 0;
                  o[_ >> 2] = h | o[_ >> 2] & 1 | 2;
                  _ = d + (h + 4) | 0;
                  o[_ >> 2] = o[_ >> 2] | 1;
                  o[f >> 2] = c | o[f >> 2] & 1 | 2;
                  f = r + (c - 4) | 0;
                  o[f >> 2] = o[f >> 2] | 1;
                  Wn(t, c);
                  l = u;
                  break
                }
              }
            } while (0);
            t = l + 4 | 0;
            r = o[t >> 2] | 0;
            do {
              if ((r & 3 | 0) != 0) {
                d = r & -8;
                if (d >>> 0 <= (a + 16 | 0) >>> 0) {
                  break
                }
                e = d - a | 0;
                n = l;
                o[t >> 2] = a | r & 1 | 2;
                o[n + (a | 4) >> 2] = e | 3;
                s = n + (d | 4) | 0;
                o[s >> 2] = o[s >> 2] | 1;
                Wn(n + a | 0, e)
              }
            } while (0);
            i = l + 8 | 0;
            return i | 0
          }
          function In(e) {
            e = e | 0;
            var r = 0,
              t = 0,
              n = 0;
            if ((o[3548] | 0) != 0) {
              r = o[3549] | 0;
              t = xn(r, e) | 0;
              return t | 0
            }
            n = De(30) | 0;
            if ((n - 1 & n | 0) != 0) {
              Se();
              return 0
            }
            o[3550] = n;
            o[3549] = n;
            o[3551] = -1;
            o[3552] = -1;
            o[3553] = 0;
            o[3667] = 0;
            o[3548] = (Xe(0) | 0) & -16 ^ 1431655768;
            r = o[3549] | 0;
            t = xn(r, e) | 0;
            return t | 0
          }
          function Ln(e) {
            e = e | 0;
            var r = 0;
            do {
              if ((o[3548] | 0) == 0) {
                r = De(30) | 0;
                if ((r - 1 & r | 0) == 0) {
                  o[3550] = r;
                  o[3549] = r;
                  o[3551] = -1;
                  o[3552] = -1;
                  o[3553] = 0;
                  o[3667] = 0;
                  o[3548] = (Xe(0) | 0) & -16 ^ 1431655768;
                  break
                } else {
                  Se();
                  return 0
                }
              }
            } while (0);
            r = o[3549] | 0;
            return xn(r, e - 1 + r & -r) | 0
          }
          function Bn(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var n = 0,
              i = 0;
            n = f;
            f = f + 8 | 0;
            i = n | 0;
            o[i >> 2] = r;
            r = Un(e, i, 3, t) | 0;
            f = n;
            return r | 0
          }
          function Un(e, r, t, n) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            var i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              f = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0;
            do {
              if ((o[3548] | 0) == 0) {
                i = De(30) | 0;
                if ((i - 1 & i | 0) == 0) {
                  o[3550] = i;
                  o[3549] = i;
                  o[3551] = -1;
                  o[3552] = -1;
                  o[3553] = 0;
                  o[3667] = 0;
                  o[3548] = (Xe(0) | 0) & -16 ^ 1431655768;
                  break
                } else {
                  Se();
                  return 0
                }
              }
            } while (0);
            i = (e | 0) == 0;
            do {
              if ((n | 0) == 0) {
                if (i) {
                  a = On(0) | 0;
                  return a | 0
                } else {
                  s = e << 2;
                  if (s >>> 0 < 11 >>> 0) {
                    l = 0;
                    u = 16;
                    break
                  }
                  l = 0;
                  u = s + 11 & -8;
                  break
                }
              } else {
                if (i) {
                  a = n
                } else {
                  l = n;
                  u = 0;
                  break
                }
                return a | 0
              }
            } while (0);
            do {
              if ((t & 1 | 0) == 0) {
                if (i) {
                  c = 0;
                  f = 0;
                  break
                } else {
                  d = 0;
                  _ = 0
                }
                while (1) {
                  n = o[r + (_ << 2) >> 2] | 0;
                  if (n >>> 0 < 11 >>> 0) {
                    h = 16
                  } else {
                    h = n + 11 & -8
                  }
                  n = h + d | 0;
                  s = _ + 1 | 0;
                  if ((s | 0) == (e | 0)) {
                    c = 0;
                    f = n;
                    break
                  } else {
                    d = n;
                    _ = s
                  }
                }
              } else {
                s = o[r >> 2] | 0;
                if (s >>> 0 < 11 >>> 0) {
                  p = 16
                } else {
                  p = s + 11 & -8
                }
                c = p;
                f = re(p, e) | 0
              }
            } while (0);
            p = On(u - 4 + f | 0) | 0;
            if ((p | 0) == 0) {
              a = 0;
              return a | 0
            }
            _ = p - 8 | 0;
            d = o[p - 4 >> 2] & -8;
            if ((t & 2 | 0) != 0) {
              Jn(p | 0, 0, -4 - u + d | 0)
            }
            if ((l | 0) == 0) {
              o[p + (f - 4) >> 2] = d - f | 3;
              m = p + f | 0;
              w = f
            } else {
              m = l;
              w = d
            }
            o[m >> 2] = p;
            p = e - 1 | 0;
            e: do {
              if ((p | 0) == 0) {
                b = _;
                E = w
              } else {
                if ((c | 0) == 0) {
                  S = _;
                  v = w;
                  k = 0
                } else {
                  e = _;
                  d = w;
                  l = 0;
                  while (1) {
                    f = d - c | 0;
                    o[e + 4 >> 2] = c | 3;
                    u = e + c | 0;
                    t = l + 1 | 0;
                    o[m + (t << 2) >> 2] = e + (c + 8);
                    if ((t | 0) == (p | 0)) {
                      b = u;
                      E = f;
                      break e
                    } else {
                      e = u;
                      d = f;
                      l = t
                    }
                  }
                }
                while (1) {
                  l = o[r + (k << 2) >> 2] | 0;
                  if (l >>> 0 < 11 >>> 0) {
                    g = 16
                  } else {
                    g = l + 11 & -8
                  }
                  l = v - g | 0;
                  o[S + 4 >> 2] = g | 3;
                  d = S + g | 0;
                  e = k + 1 | 0;
                  o[m + (e << 2) >> 2] = S + (g + 8);
                  if ((e | 0) == (p | 0)) {
                    b = d;
                    E = l;
                    break
                  } else {
                    S = d;
                    v = l;
                    k = e
                  }
                }
              }
            } while (0);
            o[b + 4 >> 2] = E | 3;
            a = m;
            return a | 0
          }
          function qn(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            return Un(e, r, 0, t) | 0
          }
          function Hn(e) {
            e = e | 0;
            var r = 0,
              t = 0,
              n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              f = 0,
              d = 0;
            do {
              if ((o[3548] | 0) == 0) {
                r = De(30) | 0;
                if ((r - 1 & r | 0) == 0) {
                  o[3550] = r;
                  o[3549] = r;
                  o[3551] = -1;
                  o[3552] = -1;
                  o[3553] = 0;
                  o[3667] = 0;
                  o[3548] = (Xe(0) | 0) & -16 ^ 1431655768;
                  break
                } else {
                  Se();
                  return 0
                }
              }
            } while (0);
            if (e >>> 0 >= 4294967232 >>> 0) {
              t = 0;
              return t | 0
            }
            r = o[3562] | 0;
            if ((r | 0) == 0) {
              t = 0;
              return t | 0
            }
            n = o[3559] | 0;
            do {
              if (n >>> 0 > (e + 40 | 0) >>> 0) {
                i = o[3550] | 0;
                a = re((((- 41 - e + n + i | 0) >>> 0) / (i >>> 0) | 0) - 1 | 0, i) | 0;
                s = r;
                l = 14672;
                while (1) {
                  u = o[l >> 2] | 0;
                  if (u >>> 0 <= s >>> 0) {
                    if ((u + (o[l + 4 >> 2] | 0) | 0) >>> 0 > s >>> 0) {
                      c = l;
                      break
                    }
                  }
                  u = o[l + 8 >> 2] | 0;
                  if ((u | 0) == 0) {
                    c = 0;
                    break
                  } else {
                    l = u
                  }
                }
                if ((o[c + 12 >> 2] & 8 | 0) != 0) {
                  break
                }
                l = He(0) | 0;
                s = c + 4 | 0;
                if ((l | 0) != ((o[c >> 2] | 0) + (o[s >> 2] | 0) | 0)) {
                  break
                }
                u = He(- (a >>> 0 > 2147483646 >>> 0 ? -2147483648 - i | 0 : a) | 0) | 0;
                f = He(0) | 0;
                if (!((u | 0) != -1 & f >>> 0 < l >>> 0)) {
                  break
                }
                u = l - f | 0;
                if ((l | 0) == (f | 0)) {
                  break
                }
                o[s >> 2] = (o[s >> 2] | 0) - u;
                o[3664] = (o[3664] | 0) - u;
                s = o[3562] | 0;
                f = (o[3559] | 0) - u | 0;
                u = s;
                l = s + 8 | 0;
                if ((l & 7 | 0) == 0) {
                  d = 0
                } else {
                  d = -l & 7
                }
                l = f - d | 0;
                o[3562] = u + d;
                o[3559] = l;
                o[u + (d + 4) >> 2] = l | 1;
                o[u + (f + 4) >> 2] = 40;
                o[3563] = o[3552];
                t = 1;
                return t | 0
              }
            } while (0);
            if ((o[3559] | 0) >>> 0 <= (o[3563] | 0) >>> 0) {
              t = 0;
              return t | 0
            }
            o[3563] = -1;
            t = 0;
            return t | 0
          }
          function zn() {
            return o[3664] | 0
          }
          function Vn() {
            return o[3665] | 0
          }
          function jn(e) {
            e = e | 0;
            var r = 0,
              t = 0,
              n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              f = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0,
              y = 0,
              M = 0,
              F = 0,
              A = 0,
              T = 0,
              O = 0;
            do {
              if ((o[3548] | 0) == 0) {
                r = De(30) | 0;
                if ((r - 1 & r | 0) == 0) {
                  o[3550] = r;
                  o[3549] = r;
                  o[3551] = -1;
                  o[3552] = -1;
                  o[3553] = 0;
                  o[3667] = 0;
                  o[3548] = (Xe(0) | 0) & -16 ^ 1431655768;
                  break
                } else {
                  Se()
                }
              }
            } while (0);
            r = o[3562] | 0;
            if ((r | 0) == 0) {
              t = 0;
              n = 0;
              i = 0;
              a = 0;
              s = 0;
              l = 0;
              u = 0
            } else {
              c = o[3559] | 0;
              f = c + 40 | 0;
              d = 1;
              _ = f;
              h = f;
              f = 14672;
              while (1) {
                p = o[f >> 2] | 0;
                m = p + 8 | 0;
                if ((m & 7 | 0) == 0) {
                  w = 0
                } else {
                  w = -m & 7
                }
                m = p + (o[f + 4 >> 2] | 0) | 0;
                b = d;
                E = _;
                S = h;
                v = p + w | 0;
                while (1) {
                  if (v >>> 0 >= m >>> 0 | (v | 0) == (r | 0)) {
                    k = b;
                    g = E;
                    y = S;
                    break
                  }
                  M = o[v + 4 >> 2] | 0;
                  if ((M | 0) == 7) {
                    k = b;
                    g = E;
                    y = S;
                    break
                  }
                  F = M & -8;
                  A = F + S | 0;
                  if ((M & 3 | 0) == 1) {
                    T = F + E | 0;
                    O = b + 1 | 0
                  } else {
                    T = E;
                    O = b
                  }
                  M = v + F | 0;
                  if (M >>> 0 < p >>> 0) {
                    k = O;
                    g = T;
                    y = A;
                    break
                  } else {
                    b = O;
                    E = T;
                    S = A;
                    v = M
                  }
                }
                v = o[f + 8 >> 2] | 0;
                if ((v | 0) == 0) {
                  break
                } else {
                  d = k;
                  _ = g;
                  h = y;
                  f = v
                }
              }
              f = o[3664] | 0;
              t = c;
              n = y;
              i = k;
              a = f - y | 0;
              s = o[3665] | 0;
              l = f - g | 0;
              u = g
            }
            o[e >> 2] = n;
            o[e + 4 >> 2] = i;
            i = e + 8 | 0;
            o[i >> 2] = 0;
            o[i + 4 >> 2] = 0;
            o[e + 16 >> 2] = a;
            o[e + 20 >> 2] = s;
            o[e + 24 >> 2] = 0;
            o[e + 28 >> 2] = l;
            o[e + 32 >> 2] = u;
            o[e + 36 >> 2] = t;
            return
          }
          function Xn() {
            var e = 0,
              r = 0,
              t = 0,
              n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              d = 0,
              _ = 0,
              h = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0;
            e = f;
            do {
              if ((o[3548] | 0) == 0) {
                r = De(30) | 0;
                if ((r - 1 & r | 0) == 0) {
                  o[3550] = r;
                  o[3549] = r;
                  o[3551] = -1;
                  o[3552] = -1;
                  o[3553] = 0;
                  o[3667] = 0;
                  o[3548] = (Xe(0) | 0) & -16 ^ 1431655768;
                  break
                } else {
                  Se()
                }
              }
            } while (0);
            r = o[3562] | 0;
            if ((r | 0) == 0) {
              t = 0;
              n = 0;
              i = 0
            } else {
              a = o[3665] | 0;
              s = o[3664] | 0;
              l = s - 40 - (o[3559] | 0) | 0;
              u = 14672;
              while (1) {
                c = o[u >> 2] | 0;
                d = c + 8 | 0;
                if ((d & 7 | 0) == 0) {
                  _ = 0
                } else {
                  _ = -d & 7
                }
                d = c + (o[u + 4 >> 2] | 0) | 0;
                h = l;
                m = c + _ | 0;
                while (1) {
                  if (m >>> 0 >= d >>> 0 | (m | 0) == (r | 0)) {
                    w = h;
                    break
                  }
                  b = o[m + 4 >> 2] | 0;
                  if ((b | 0) == 7) {
                    w = h;
                    break
                  }
                  E = b & -8;
                  S = h - ((b & 3 | 0) == 1 ? E : 0) | 0;
                  b = m + E | 0;
                  if (b >>> 0 < c >>> 0) {
                    w = S;
                    break
                  } else {
                    h = S;
                    m = b
                  }
                }
                m = o[u + 8 >> 2] | 0;
                if ((m | 0) == 0) {
                  t = w;
                  n = s;
                  i = a;
                  break
                } else {
                  l = w;
                  u = m
                }
              }
            }
            u = o[p >> 2] | 0;
            ve(u | 0, 13872, (w = f, f = f + 8 | 0, o[w >> 2] = i, w) | 0) | 0;
            f = w;
            ve(u | 0, 13920, (w = f, f = f + 8 | 0, o[w >> 2] = n, w) | 0) | 0;
            f = w;
            ve(u | 0, 13608, (w = f, f = f + 8 | 0, o[w >> 2] = t, w) | 0) | 0;
            f = w;
            f = e;
            return
          }
          function Kn(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              n = 0;
            do {
              if ((o[3548] | 0) == 0) {
                t = De(30) | 0;
                if ((t - 1 & t | 0) == 0) {
                  o[3550] = t;
                  o[3549] = t;
                  o[3551] = -1;
                  o[3552] = -1;
                  o[3553] = 0;
                  o[3667] = 0;
                  o[3548] = (Xe(0) | 0) & -16 ^ 1431655768;
                  break
                } else {
                  Se();
                  return 0
                }
              }
            } while (0);
            if ((e | 0) == (- 3 | 0)) {
              o[3551] = r;
              n = 1;
              return n | 0
            } else if ((e | 0) == (- 1 | 0)) {
              o[3552] = r;
              n = 1;
              return n | 0
            } else if ((e | 0) == (- 2 | 0)) {
              if ((o[3549] | 0) >>> 0 > r >>> 0) {
                n = 0;
                return n | 0
              }
              if ((r - 1 & r | 0) != 0) {
                n = 0;
                return n | 0
              }
              o[3550] = r;
              n = 1;
              return n | 0
            } else {
              n = 0;
              return n | 0
            }
            return 0
          }
          function Yn(e) {
            e = e | 0;
            var r = 0,
              t = 0,
              n = 0;
            do {
              if ((e | 0) == 0) {
                r = 0
              } else {
                t = o[e - 4 >> 2] | 0;
                n = t & 3;
                if ((n | 0) == 1) {
                  r = 0;
                  break
                }
                r = (t & -8) - ((n | 0) == 0 ? 8 : 4) | 0
              }
            } while (0);
            return r | 0
          }
          function Wn(e, r) {
            e = e | 0;
            r = r | 0;
            var t = 0,
              n = 0,
              i = 0,
              a = 0,
              s = 0,
              l = 0,
              u = 0,
              c = 0,
              f = 0,
              d = 0,
              _ = 0,
              h = 0,
              p = 0,
              m = 0,
              w = 0,
              b = 0,
              E = 0,
              S = 0,
              v = 0,
              k = 0,
              g = 0,
              y = 0,
              M = 0,
              F = 0,
              A = 0,
              T = 0,
              O = 0,
              R = 0,
              C = 0,
              N = 0,
              P = 0,
              x = 0,
              D = 0,
              I = 0,
              L = 0;
            t = e;
            n = t + r | 0;
            i = n;
            a = o[e + 4 >> 2] | 0;
            e: do {
              if ((a & 1 | 0) == 0) {
                s = o[e >> 2] | 0;
                if ((a & 3 | 0) == 0) {
                  return
                }
                l = t + (- s | 0) | 0;
                u = l;
                c = s + r | 0;
                f = o[3560] | 0;
                if (l >>> 0 < f >>> 0) {
                  Se()
                }
                if ((u | 0) == (o[3561] | 0)) {
                  d = t + (r + 4) | 0;
                  if ((o[d >> 2] & 3 | 0) != 3) {
                    _ = u;
                    h = c;
                    break
                  }
                  o[3558] = c;
                  o[d >> 2] = o[d >> 2] & -2;
                  o[t + (4 - s) >> 2] = c | 1;
                  o[n >> 2] = c;
                  return
                }
                d = s >>> 3;
                if (s >>> 0 < 256 >>> 0) {
                  p = o[t + (8 - s) >> 2] | 0;
                  m = o[t + (12 - s) >> 2] | 0;
                  w = 14264 + (d << 1 << 2) | 0;
                  do {
                    if ((p | 0) != (w | 0)) {
                      if (p >>> 0 < f >>> 0) {
                        Se()
                      }
                      if ((o[p + 12 >> 2] | 0) == (u | 0)) {
                        break
                      }
                      Se()
                    }
                  } while (0);
                  if ((m | 0) == (p | 0)) {
                    o[3556] = o[3556] & ~(1 << d);
                    _ = u;
                    h = c;
                    break
                  }
                  do {
                    if ((m | 0) == (w | 0)) {
                      b = m + 8 | 0
                    } else {
                      if (m >>> 0 < f >>> 0) {
                        Se()
                      }
                      E = m + 8 | 0;
                      if ((o[E >> 2] | 0) == (u | 0)) {
                        b = E;
                        break
                      }
                      Se()
                    }
                  } while (0);
                  o[p + 12 >> 2] = m;
                  o[b >> 2] = p;
                  _ = u;
                  h = c;
                  break
                }
                w = l;
                d = o[t + (24 - s) >> 2] | 0;
                E = o[t + (12 - s) >> 2] | 0;
                do {
                  if ((E | 0) == (w | 0)) {
                    S = 16 - s | 0;
                    v = t + (S + 4) | 0;
                    k = o[v >> 2] | 0;
                    if ((k | 0) == 0) {
                      g = t + S | 0;
                      S = o[g >> 2] | 0;
                      if ((S | 0) == 0) {
                        y = 0;
                        break
                      } else {
                        M = S;
                        F = g
                      }
                    } else {
                      M = k;
                      F = v
                    }
                    while (1) {
                      v = M + 20 | 0;
                      k = o[v >> 2] | 0;
                      if ((k | 0) != 0) {
                        M = k;
                        F = v;
                        continue
                      }
                      v = M + 16 | 0;
                      k = o[v >> 2] | 0;
                      if ((k | 0) == 0) {
                        break
                      } else {
                        M = k;
                        F = v
                      }
                    }
                    if (F >>> 0 < f >>> 0) {
                      Se()
                    } else {
                      o[F >> 2] = 0;
                      y = M;
                      break
                    }
                  } else {
                    v = o[t + (8 - s) >> 2] | 0;
                    if (v >>> 0 < f >>> 0) {
                      Se()
                    }
                    k = v + 12 | 0;
                    if ((o[k >> 2] | 0) != (w | 0)) {
                      Se()
                    }
                    g = E + 8 | 0;
                    if ((o[g >> 2] | 0) == (w | 0)) {
                      o[k >> 2] = E;
                      o[g >> 2] = v;
                      y = E;
                      break
                    } else {
                      Se()
                    }
                  }
                } while (0);
                if ((d | 0) == 0) {
                  _ = u;
                  h = c;
                  break
                }
                E = t + (28 - s) | 0;
                f = 14528 + (o[E >> 2] << 2) | 0;
                do {
                  if ((w | 0) == (o[f >> 2] | 0)) {
                    o[f >> 2] = y;
                    if ((y | 0) != 0) {
                      break
                    }
                    o[3557] = o[3557] & ~(1 << o[E >> 2]);
                    _ = u;
                    h = c;
                    break e
                  } else {
                    if (d >>> 0 < (o[3560] | 0) >>> 0) {
                      Se()
                    }
                    l = d + 16 | 0;
                    if ((o[l >> 2] | 0) == (w | 0)) {
                      o[l >> 2] = y
                    } else {
                      o[d + 20 >> 2] = y
                    }
                    if ((y | 0) == 0) {
                      _ = u;
                      h = c;
                      break e
                    }
                  }
                } while (0);
                if (y >>> 0 < (o[3560] | 0) >>> 0) {
                  Se()
                }
                o[y + 24 >> 2] = d;
                w = 16 - s | 0;
                E = o[t + w >> 2] | 0;
                do {
                  if ((E | 0) != 0) {
                    if (E >>> 0 < (o[3560] | 0) >>> 0) {
                      Se()
                    } else {
                      o[y + 16 >> 2] = E;
                      o[E + 24 >> 2] = y;
                      break
                    }
                  }
                } while (0);
                E = o[t + (w + 4) >> 2] | 0;
                if ((E | 0) == 0) {
                  _ = u;
                  h = c;
                  break
                }
                if (E >>> 0 < (o[3560] | 0) >>> 0) {
                  Se()
                } else {
                  o[y + 20 >> 2] = E;
                  o[E + 24 >> 2] = y;
                  _ = u;
                  h = c;
                  break
                }
              } else {
                _ = e;
                h = r
              }
            } while (0);
            e = o[3560] | 0;
            if (n >>> 0 < e >>> 0) {
              Se()
            }
            y = t + (r + 4) | 0;
            M = o[y >> 2] | 0;
            do {
              if ((M & 2 | 0) == 0) {
                if ((i | 0) == (o[3562] | 0)) {
                  F = (o[3559] | 0) + h | 0;
                  o[3559] = F;
                  o[3562] = _;
                  o[_ + 4 >> 2] = F | 1;
                  if ((_ | 0) != (o[3561] | 0)) {
                    return
                  }
                  o[3561] = 0;
                  o[3558] = 0;
                  return
                }
                if ((i | 0) == (o[3561] | 0)) {
                  F = (o[3558] | 0) + h | 0;
                  o[3558] = F;
                  o[3561] = _;
                  o[_ + 4 >> 2] = F | 1;
                  o[_ + F >> 2] = F;
                  return
                }
                F = (M & -8) + h | 0;
                b = M >>> 3;
                e: do {
                  if (M >>> 0 < 256 >>> 0) {
                    a = o[t + (r + 8) >> 2] | 0;
                    E = o[t + (r + 12) >> 2] | 0;
                    s = 14264 + (b << 1 << 2) | 0;
                    do {
                      if ((a | 0) != (s | 0)) {
                        if (a >>> 0 < e >>> 0) {
                          Se()
                        }
                        if ((o[a + 12 >> 2] | 0) == (i | 0)) {
                          break
                        }
                        Se()
                      }
                    } while (0);
                    if ((E | 0) == (a | 0)) {
                      o[3556] = o[3556] & ~(1 << b);
                      break
                    }
                    do {
                      if ((E | 0) == (s | 0)) {
                        A = E + 8 | 0
                      } else {
                        if (E >>> 0 < e >>> 0) {
                          Se()
                        }
                        d = E + 8 | 0;
                        if ((o[d >> 2] | 0) == (i | 0)) {
                          A = d;
                          break
                        }
                        Se()
                      }
                    } while (0);
                    o[a + 12 >> 2] = E;
                    o[A >> 2] = a
                  } else {
                    s = n;
                    d = o[t + (r + 24) >> 2] | 0;
                    f = o[t + (r + 12) >> 2] | 0;
                    do {
                      if ((f | 0) == (s | 0)) {
                        l = t + (r + 20) | 0;
                        p = o[l >> 2] | 0;
                        if ((p | 0) == 0) {
                          m = t + (r + 16) | 0;
                          v = o[m >> 2] | 0;
                          if ((v | 0) == 0) {
                            T = 0;
                            break
                          } else {
                            O = v;
                            R = m
                          }
                        } else {
                          O = p;
                          R = l
                        }
                        while (1) {
                          l = O + 20 | 0;
                          p = o[l >> 2] | 0;
                          if ((p | 0) != 0) {
                            O = p;
                            R = l;
                            continue
                          }
                          l = O + 16 | 0;
                          p = o[l >> 2] | 0;
                          if ((p | 0) == 0) {
                            break
                          } else {
                            O = p;
                            R = l
                          }
                        }
                        if (R >>> 0 < e >>> 0) {
                          Se()
                        } else {
                          o[R >> 2] = 0;
                          T = O;
                          break
                        }
                      } else {
                        l = o[t + (r + 8) >> 2] | 0;
                        if (l >>> 0 < e >>> 0) {
                          Se()
                        }
                        p = l + 12 | 0;
                        if ((o[p >> 2] | 0) != (s | 0)) {
                          Se()
                        }
                        m = f + 8 | 0;
                        if ((o[m >> 2] | 0) == (s | 0)) {
                          o[p >> 2] = f;
                          o[m >> 2] = l;
                          T = f;
                          break
                        } else {
                          Se()
                        }
                      }
                    } while (0);
                    if ((d | 0) == 0) {
                      break
                    }
                    f = t + (r + 28) | 0;
                    a = 14528 + (o[f >> 2] << 2) | 0;
                    do {
                      if ((s | 0) == (o[a >> 2] | 0)) {
                        o[a >> 2] = T;
                        if ((T | 0) != 0) {
                          break
                        }
                        o[3557] = o[3557] & ~(1 << o[f >> 2]);
                        break e
                      } else {
                        if (d >>> 0 < (o[3560] | 0) >>> 0) {
                          Se()
                        }
                        E = d + 16 | 0;
                        if ((o[E >> 2] | 0) == (s | 0)) {
                          o[E >> 2] = T
                        } else {
                          o[d + 20 >> 2] = T
                        }
                        if ((T | 0) == 0) {
                          break e
                        }
                      }
                    } while (0);
                    if (T >>> 0 < (o[3560] | 0) >>> 0) {
                      Se()
                    }
                    o[T + 24 >> 2] = d;
                    s = o[t + (r + 16) >> 2] | 0;
                    do {
                      if ((s | 0) != 0) {
                        if (s >>> 0 < (o[3560] | 0) >>> 0) {
                          Se()
                        } else {
                          o[T + 16 >> 2] = s;
                          o[s + 24 >> 2] = T;
                          break
                        }
                      }
                    } while (0);
                    s = o[t + (r + 20) >> 2] | 0;
                    if ((s | 0) == 0) {
                      break
                    }
                    if (s >>> 0 < (o[3560] | 0) >>> 0) {
                      Se()
                    } else {
                      o[T + 20 >> 2] = s;
                      o[s + 24 >> 2] = T;
                      break
                    }
                  }
                } while (0);
                o[_ + 4 >> 2] = F | 1;
                o[_ + F >> 2] = F;
                if ((_ | 0) != (o[3561] | 0)) {
                  C = F;
                  break
                }
                o[3558] = F;
                return
              } else {
                o[y >> 2] = M & -2;
                o[_ + 4 >> 2] = h | 1;
                o[_ + h >> 2] = h;
                C = h
              }
            } while (0);
            h = C >>> 3;
            if (C >>> 0 < 256 >>> 0) {
              M = h << 1;
              y = 14264 + (M << 2) | 0;
              T = o[3556] | 0;
              r = 1 << h;
              do {
                if ((T & r | 0) == 0) {
                  o[3556] = T | r;
                  N = y;
                  P = 14264 + (M + 2 << 2) | 0
                } else {
                  h = 14264 + (M + 2 << 2) | 0;
                  t = o[h >> 2] | 0;
                  if (t >>> 0 >= (o[3560] | 0) >>> 0) {
                    N = t;
                    P = h;
                    break
                  }
                  Se()
                }
              } while (0);
              o[P >> 2] = _;
              o[N + 12 >> 2] = _;
              o[_ + 8 >> 2] = N;
              o[_ + 12 >> 2] = y;
              return
            }
            y = _;
            N = C >>> 8;
            do {
              if ((N | 0) == 0) {
                x = 0
              } else {
                if (C >>> 0 > 16777215 >>> 0) {
                  x = 31;
                  break
                }
                P = (N + 1048320 | 0) >>> 16 & 8;
                M = N << P;
                r = (M + 520192 | 0) >>> 16 & 4;
                T = M << r;
                M = (T + 245760 | 0) >>> 16 & 2;
                h = 14 - (r | P | M) + (T << M >>> 15) | 0;
                x = C >>> ((h + 7 | 0) >>> 0) & 1 | h << 1
              }
            } while (0);
            N = 14528 + (x << 2) | 0;
            o[_ + 28 >> 2] = x;
            o[_ + 20 >> 2] = 0;
            o[_ + 16 >> 2] = 0;
            h = o[3557] | 0;
            M = 1 << x;
            if ((h & M | 0) == 0) {
              o[3557] = h | M;
              o[N >> 2] = y;
              o[_ + 24 >> 2] = N;
              o[_ + 12 >> 2] = _;
              o[_ + 8 >> 2] = _;
              return
            }
            if ((x | 0) == 31) {
              D = 0
            } else {
              D = 25 - (x >>> 1) | 0
            }
            x = C << D;
            D = o[N >> 2] | 0;
            while (1) {
              if ((o[D + 4 >> 2] & -8 | 0) == (C | 0)) {
                break
              }
              I = D + 16 + (x >>> 31 << 2) | 0;
              N = o[I >> 2] | 0;
              if ((N | 0) == 0) {
                L = 2991;
                break
              } else {
                x = x << 1;
                D = N
              }
            }
            if ((L | 0) == 2991) {
              if (I >>> 0 < (o[3560] | 0) >>> 0) {
                Se()
              }
              o[I >> 2] = y;
              o[_ + 24 >> 2] = D;
              o[_ + 12 >> 2] = _;
              o[_ + 8 >> 2] = _;
              return
            }
            I = D + 8 | 0;
            L = o[I >> 2] | 0;
            x = o[3560] | 0;
            if (D >>> 0 < x >>> 0) {
              Se()
            }
            if (L >>> 0 < x >>> 0) {
              Se()
            }
            o[L + 12 >> 2] = y;
            o[I >> 2] = y;
            o[_ + 8 >> 2] = L;
            o[_ + 12 >> 2] = D;
            o[_ + 24 >> 2] = 0;
            return
          }
          function Gn(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var i = 0;
            i = e | 0;
            if ((e & 3) == (r & 3)) {
              while (e & 3) {
                if ((t | 0) == 0) return i | 0;
                n[e] = n[r] | 0;
                e = e + 1 | 0;
                r = r + 1 | 0;
                t = t - 1 | 0
              }
              while ((t | 0) >= 4) {
                o[e >> 2] = o[r >> 2];
                e = e + 4 | 0;
                r = r + 4 | 0;
                t = t - 4 | 0
              }
            }
            while ((t | 0) > 0) {
              n[e] = n[r] | 0;
              e = e + 1 | 0;
              r = r + 1 | 0;
              t = t - 1 | 0
            }
            return i | 0
          }
          function Qn(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            if ((r | 0) < (e | 0) & (e | 0) < (r + t | 0)) {
              r = r + t | 0;
              e = e + t | 0;
              while ((t | 0) > 0) {
                e = e - 1 | 0;
                r = r - 1 | 0;
                t = t - 1 | 0;
                n[e] = n[r] | 0
              }
            } else {
              Gn(e, r, t) | 0
            }
          }
          function Zn(e) {
            e = e | 0;
            var r = 0;
            r = e;
            while (n[r] | 0) {
              r = r + 1 | 0
            }
            return r - e | 0
          }
          function Jn(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            var i = 0,
              a = 0,
              s = 0;
            i = e + t | 0;
            if ((t | 0) >= 20) {
              r = r & 255;
              t = e & 3;
              a = r | r << 8 | r << 16 | r << 24;
              s = i & ~3;
              if (t) {
                t = e + 4 - t | 0;
                while ((e | 0) < (t | 0)) {
                  n[e] = r;
                  e = e + 1 | 0
                }
              }
              while ((e | 0) < (s | 0)) {
                o[e >> 2] = a;
                e = e + 4 | 0
              }
            }
            while ((e | 0) < (i | 0)) {
              n[e] = r;
              e = e + 1 | 0
            }
          }
          function $n(e, r, t, n, i, o, a, s, l, u, c, f, d, _) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            u = u | 0;
            c = c | 0;
            f = f | 0;
            d = d | 0;
            _ = _ | 0;
            vi[e & 7](r | 0, t | 0, n | 0, i | 0, o | 0, a | 0, s | 0, l | 0, u | 0, c | 0, f | 0, d | 0, _ | 0)
          }
          function ei(e, r, t, n, i, o, a) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            ki[e & 7](r | 0, t | 0, n | 0, i | 0, o | 0, a | 0)
          }
          function ri(e, r) {
            e = e | 0;
            r = r | 0;
            gi[e & 15](r | 0)
          }
          function ti(e) {
            e = e | 0;
            yi[e & 1]()
          }
          function ni(e, r, t, n) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            return Mi[e & 31](r | 0, t | 0, n | 0) | 0
          }
          function ii(e, r) {
            e = e | 0;
            r = r | 0;
            return Fi[e & 15](r | 0) | 0
          }
          function oi(e, r, t, n) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            Ai[e & 7](r | 0, t | 0, n | 0)
          }
          function ai(e, r, t, n, i, o, a, s, l, u, c, f, d, _, h, p, m, w, b, E, S) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            u = u | 0;
            c = +c;
            f = f | 0;
            d = d | 0;
            _ = _ | 0;
            h = h | 0;
            p = p | 0;
            m = m | 0;
            w = w | 0;
            b = b | 0;
            E = E | 0;
            S = S | 0;
            return Ti[e & 7](r | 0, t | 0, n | 0, i | 0, o | 0, a | 0, s | 0, l | 0, u | 0, +c, f | 0, d | 0, _ | 0, h | 0, p | 0, m | 0, w | 0, b | 0, E | 0, S | 0) | 0
          }
          function si(e, r, t, n, i, o, a, s, l, u, c, f, d, _, h, p) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = +o;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            u = u | 0;
            c = c | 0;
            f = f | 0;
            d = d | 0;
            _ = _ | 0;
            h = +h;
            p = p | 0;
            Oi[e & 7](r | 0, t | 0, n | 0, i | 0, +o, a | 0, s | 0, l | 0, u | 0, c | 0, f | 0, d | 0, _ | 0, +h, p | 0)
          }
          function li(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            return Ri[e & 1](r | 0, t | 0) | 0
          }
          function ui(e, r, t, n, i) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            Ci[e & 7](r | 0, t | 0, n | 0, i | 0)
          }
          function ci(e, r, t, n, i, o, a, s, l, u, c, f, d) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            u = u | 0;
            c = c | 0;
            f = f | 0;
            d = d | 0;
            te(0)
          }
          function fi(e, r, t, n, i, o) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            te(1)
          }
          function di(e) {
            e = e | 0;
            te(2)
          }
          function _i() {
            te(3)
          }
          function hi(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            te(4);
            return 0
          }
          function pi(e) {
            e = e | 0;
            te(5);
            return 0
          }
          function mi(e, r, t) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            te(6)
          }
          function wi(e, r, t, n, i, o, a, s, l, u, c, f, d, _, h, p, m, w, b, E) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = i | 0;
            o = o | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            u = +u;
            c = c | 0;
            f = f | 0;
            d = d | 0;
            _ = _ | 0;
            h = h | 0;
            p = p | 0;
            m = m | 0;
            w = w | 0;
            b = b | 0;
            E = E | 0;
            te(7);
            return 0
          }
          function bi(e, r, t, n, i, o, a, s, l, u, c, f, d, _, h) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            i = +i;
            o = o | 0;
            a = a | 0;
            s = s | 0;
            l = l | 0;
            u = u | 0;
            c = c | 0;
            f = f | 0;
            d = d | 0;
            _ = +_;
            h = h | 0;
            te(8)
          }
          function Ei(e, r) {
            e = e | 0;
            r = r | 0;
            te(9);
            return 0
          }
          function Si(e, r, t, n) {
            e = e | 0;
            r = r | 0;
            t = t | 0;
            n = n | 0;
            te(10)
          }
          var vi = [ci, ci, Rr, ci, xr, ci, ci, ci];
          var ki = [fi, fi, Pr, fi, Dr, fi, fi, fi];
          var gi = [di, di, vt, di, Nt, di, Dt, di, wt, di, di, di, di, di, di, di];
          var yi = [_i, _i];
          var Mi = [hi, hi, Jt, hi, kt, hi, Pt, hi, Ut, hi, gt, hi, bt, hi, yt, hi, ht, hi, Bt, hi, It, hi, un, hi, hi, hi, hi, hi, hi, hi, hi, hi];
          var Fi = [pi, pi, St, pi, xt, pi, Ct, pi, mt, pi, pi, pi, pi, pi, pi, pi];
          var Ai = [mi, mi, Ft, mi, Rt, mi, Tt, mi];
          var Ti = [wi, wi, ft, wi, lt, wi, wi, wi];
          var Oi = [bi, bi, dt, bi, ct, bi, bi, bi];
          var Ri = [Ei, Ei];
          var Ci = [Si, Si, At, Si, Ot, Si, Mt, Si];
          return {
            _strlen: Zn,
            _speex_bits_destroy: pr,
            _speex_bits_set_bit_buffer: hr,
            _speex_bits_write: Er,
            _nb_decoder_ctl: yt,
            _pvalloc: Ln,
            _nb_decoder_destroy: vt,
            _sb_encode: Pt,
            _lsp_enforce_margin: nt,
            _pitch_xcorr: at,
            _compute_rms16: zr,
            _speex_bits_write_whole_bytes: vr,
            _vbr_init: kn,
            _memcpy: Gn,
            _speex_bits_unpack_unsigned: yr,
            _lsp_quant_high: Ot,
            _malloc_trim: Hn,
            _speex_decode_int: Qt,
            _speex_bits_reset: dr,
            _lsp_unquant_high: Rt,
            _speex_bits_unpack_signed: gr,
            _malloc_usable_size: Yn,
            _lsp_quant_nb: Mt,
            _bw_lpc: Ir,
            _wb_mode_query: ht,
            _sb_encoder_init: Ct,
            _lsp_interpolate: it,
            _sb_decode_lost: Lt,
            _free: Rn,
            _speex_bits_pack: kr,
            _sb_decode: It,
            _speex_bits_insert_terminator: Sr,
            _memalign: xn,
            _speex_bits_rewind: mr,
            _speex_std_mode_request_handler: rn,
            __speex_fatal: Et,
            _speex_stereo_state_init: hn,
            _independent_calloc: Bn,
            _lpc_to_lsp: rt,
            _lsp_to_lpc: tt,
            _speex_encode: Kt,
            _speex_bits_remaining: Tr,
            _speex_std_enh_request_handler: an,
            _speex_bits_peek_unsigned: Mr,
            _inner_prod: ot,
            _speex_std_vbr_quality_request_handler: sn,
            _speex_bits_nbytes: Or,
            _speex_encoder_ctl: Wt,
            _vbr_destroy: yn,
            _forced_pitch_quant: ft,
            _speex_encoder_init: qt,
            _speex_decode_stereo_int: Sn,
            _vbr_analysis: gn,
            _speex_lib_ctl: $t,
            _speex_std_low_mode_request_handler: tn,
            _vq_nbest: An,
            _lsp_quant_lbr: At,
            _sb_decoder_destroy: Dt,
            __spx_lpc: $r,
            _speex_packet_to_header: dn,
            _split_cb_shape_sign_unquant: Pr,
            _speex_bits_peek: Fr,
            _signal_mul: Ur,
            _residue_percep_zero16: Yr,
            _pitch_search_3tap: lt,
            _sb_encoder_ctl: Bt,
            _scal_quant: Mn,
            _highpass: Br,
            _speex_encode_int: Yt,
            _compute_weighted_codebook: Nr,
            _noise_codebook_quant: xr,
            _independent_comalloc: qn,
            _speex_mode_query: _t,
            _ialloc: Un,
            _split_cb_search_shape_sign: Rr,
            _nb_decode: kt,
            _speex_lib_get_mode: pt,
            _speex_decoder_init: Ht,
            _sb_decoder_ctl: Ut,
            _memset: Jn,
            _speex_bits_advance: Ar,
            _speex_stereo_state_destroy: mn,
            _nb_encoder_ctl: gt,
            _speex_default_user_handler: un,
            _filter_mem16: Vr,
            _nb_mode_query: Jt,
            _internal_memalign: Dn,
            _speex_header_free: _n,
            _mallopt: Kn,
            _speex_encode_stereo: wn,
            _speex_std_stereo_request_handler: vn,
            _speex_decode: Gt,
            _lsp_unquant_lbr: Tt,
            _fir_mem16: Xr,
            _syn_percep_zero16: Kr,
            _noise_codebook_unquant: Dr,
            _nb_encoder_init: mt,
            _speex_decode_native: Xt,
            __spx_autocorr: et,
            _malloc: On,
            _malloc_max_footprint: Vn,
            _speex_std_char_handler: ln,
            _speex_bits_read_from: wr,
            _valloc: In,
            _malloc_footprint: zn,
            _speex_decoder_destroy: Vt,
            _multicomb: Jr,
            _qmf_synth: Qr,
            _scal_quant32: Fn,
            _signal_div: qr,
            _speex_bits_init_buffer: _r,
            _lsp_unquant_nb: Ft,
            _calloc: Cn,
            _forced_pitch_unquant: dt,
            _split_cb_search_shape_sign_N1: Cr,
            _qmf_decomp: Gr,
            _speex_stereo_state_reset: pn,
            _sb_encoder_destroy: Nt,
            _nb_decoder_init: St,
            _mallinfo: jn,
            _speex_std_high_mode_request_handler: nn,
            _malloc_stats: Xn,
            _speex_header_to_packet: fn,
            _speex_init_header: cn,
            _sb_decoder_init: xt,
            _speex_encode_native: jt,
            _speex_inband_handler: en,
            _realloc: Nn,
            _nb_encode: bt,
            _speex_bits_init: fr,
            _vq_nbest_sign: Tn,
            _sanitize_values32: Lr,
            _interp_pitch: Zr,
            _speex_std_vbr_request_handler: on,
            _compute_impulse_response: Wr,
            _iir_mem16: jr,
            _pitch_gain_search_3tap: ut,
            _nb_encoder_destroy: wt,
            _speex_encoder_destroy: zt,
            _open_loop_nbest_pitch: st,
            _memmove: Qn,
            _pitch_unquant_3tap: ct,
            _speex_decode_stereo: En,
            _speex_bits_read_whole_bytes: br,
            _speex_encode_stereo_int: bn,
            _compute_rms: Hr,
            _speex_decoder_ctl: Zt,
            runPostSets: cr,
            stackAlloc: We,
            stackSave: Ge,
            stackRestore: Qe,
            setThrew: Ze,
            setTempRet0: er,
            setTempRet1: rr,
            setTempRet2: tr,
            setTempRet3: nr,
            setTempRet4: ir,
            setTempRet5: or,
            setTempRet6: ar,
            setTempRet7: sr,
            setTempRet8: lr,
            setTempRet9: ur,
            dynCall_viiiiiiiiiiiii: $n,
            dynCall_viiiiii: ei,
            dynCall_vi: ri,
            dynCall_v: ti,
            dynCall_iiii: ni,
            dynCall_ii: ii,
            dynCall_viii: oi,
            dynCall_iiiiiiiiiifiiiiiiiiii: ai,
            dynCall_viiiifiiiiiiiifi: si,
            dynCall_iii: li,
            dynCall_viiii: ui
          }
        }({
          Math: Math,
          Int8Array: Int8Array,
          Int16Array: Int16Array,
          Int32Array: Int32Array,
          Uint8Array: Uint8Array,
          Uint16Array: Uint16Array,
          Uint32Array: Uint32Array,
          Float32Array: Float32Array,
          Float64Array: Float64Array
        },
          {
            abort: abort,
            assert: assert,
            asmPrintInt: asmPrintInt,
            asmPrintFloat: asmPrintFloat,
            min: Math_min,
            invoke_viiiiiiiiiiiii: invoke_viiiiiiiiiiiii,
            invoke_viiiiii: invoke_viiiiii,
            invoke_vi: invoke_vi,
            invoke_v: invoke_v,
            invoke_iiii: invoke_iiii,
            invoke_ii: invoke_ii,
            invoke_viii: invoke_viii,
            invoke_iiiiiiiiiifiiiiiiiiii: invoke_iiiiiiiiiifiiiiiiiiii,
            invoke_viiiifiiiiiiiifi: invoke_viiiifiiiiiiiifi,
            invoke_iii: invoke_iii,
            invoke_viiii: invoke_viiii,
            _fabsf: _fabsf,
            _floorf: _floorf,
            _abort: _abort,
            _fprintf: _fprintf,
            _sqrt: _sqrt,
            _fflush: _fflush,
            __reallyNegative: __reallyNegative,
            _sqrtf: _sqrtf,
            _fputc: _fputc,
            _log: _log,
            _fabs: _fabs,
            _floor: _floor,
            ___setErrNo: ___setErrNo,
            _fwrite: _fwrite,
            _send: _send,
            _write: _write,
            _exit: _exit,
            _sysconf: _sysconf,
            __exit: __exit,
            __formatString: __formatString,
            _llvm_stackrestore: _llvm_stackrestore,
            _pwrite: _pwrite,
            _llvm_pow_f64: _llvm_pow_f64,
            _sbrk: _sbrk,
            _llvm_stacksave: _llvm_stacksave,
            ___errno_location: ___errno_location,
            _exp: _exp,
            _time: _time,
            _acos: _acos,
            STACKTOP: STACKTOP,
            STACK_MAX: STACK_MAX,
            tempDoublePtr: tempDoublePtr,
            ABORT: ABORT,
            NaN: NaN,
            Infinity: 1 / 0,
            _stderr: _stderr
          },
          buffer),
          _strlen = Module._strlen = asm._strlen,
          _speex_bits_destroy = Module._speex_bits_destroy = asm._speex_bits_destroy,
          _speex_bits_set_bit_buffer = Module._speex_bits_set_bit_buffer = asm._speex_bits_set_bit_buffer,
          _speex_bits_write = Module._speex_bits_write = asm._speex_bits_write,
          _nb_decoder_ctl = Module._nb_decoder_ctl = asm._nb_decoder_ctl,
          _pvalloc = Module._pvalloc = asm._pvalloc,
          _nb_decoder_destroy = Module._nb_decoder_destroy = asm._nb_decoder_destroy,
          _sb_encode = Module._sb_encode = asm._sb_encode,
          _lsp_enforce_margin = Module._lsp_enforce_margin = asm._lsp_enforce_margin,
          _pitch_xcorr = Module._pitch_xcorr = asm._pitch_xcorr,
          _compute_rms16 = Module._compute_rms16 = asm._compute_rms16,
          _speex_bits_write_whole_bytes = Module._speex_bits_write_whole_bytes = asm._speex_bits_write_whole_bytes,
          _vbr_init = Module._vbr_init = asm._vbr_init,
          _memcpy = Module._memcpy = asm._memcpy,
          _speex_bits_unpack_unsigned = Module._speex_bits_unpack_unsigned = asm._speex_bits_unpack_unsigned,
          _lsp_quant_high = Module._lsp_quant_high = asm._lsp_quant_high,
          _malloc_trim = Module._malloc_trim = asm._malloc_trim,
          _speex_decode_int = Module._speex_decode_int = asm._speex_decode_int,
          _speex_bits_reset = Module._speex_bits_reset = asm._speex_bits_reset,
          _lsp_unquant_high = Module._lsp_unquant_high = asm._lsp_unquant_high,
          _speex_bits_unpack_signed = Module._speex_bits_unpack_signed = asm._speex_bits_unpack_signed,
          _malloc_usable_size = Module._malloc_usable_size = asm._malloc_usable_size,
          _lsp_quant_nb = Module._lsp_quant_nb = asm._lsp_quant_nb,
          _bw_lpc = Module._bw_lpc = asm._bw_lpc,
          _wb_mode_query = Module._wb_mode_query = asm._wb_mode_query,
          _sb_encoder_init = Module._sb_encoder_init = asm._sb_encoder_init,
          _lsp_interpolate = Module._lsp_interpolate = asm._lsp_interpolate,
          _sb_decode_lost = Module._sb_decode_lost = asm._sb_decode_lost,
          _free = Module._free = asm._free,
          _speex_bits_pack = Module._speex_bits_pack = asm._speex_bits_pack,
          _sb_decode = Module._sb_decode = asm._sb_decode,
          _speex_bits_insert_terminator = Module._speex_bits_insert_terminator = asm._speex_bits_insert_terminator,
          _memalign = Module._memalign = asm._memalign,
          _speex_bits_rewind = Module._speex_bits_rewind = asm._speex_bits_rewind,
          _speex_std_mode_request_handler = Module._speex_std_mode_request_handler = asm._speex_std_mode_request_handler,
          __speex_fatal = Module.__speex_fatal = asm.__speex_fatal,
          _speex_stereo_state_init = Module._speex_stereo_state_init = asm._speex_stereo_state_init,
          _independent_calloc = Module._independent_calloc = asm._independent_calloc,
          _lpc_to_lsp = Module._lpc_to_lsp = asm._lpc_to_lsp,
          _lsp_to_lpc = Module._lsp_to_lpc = asm._lsp_to_lpc,
          _speex_encode = Module._speex_encode = asm._speex_encode,
          _speex_bits_remaining = Module._speex_bits_remaining = asm._speex_bits_remaining,
          _speex_std_enh_request_handler = Module._speex_std_enh_request_handler = asm._speex_std_enh_request_handler,
          _speex_bits_peek_unsigned = Module._speex_bits_peek_unsigned = asm._speex_bits_peek_unsigned,
          _inner_prod = Module._inner_prod = asm._inner_prod,
          _speex_std_vbr_quality_request_handler = Module._speex_std_vbr_quality_request_handler = asm._speex_std_vbr_quality_request_handler,
          _speex_bits_nbytes = Module._speex_bits_nbytes = asm._speex_bits_nbytes,
          _speex_encoder_ctl = Module._speex_encoder_ctl = asm._speex_encoder_ctl,
          _vbr_destroy = Module._vbr_destroy = asm._vbr_destroy,
          _forced_pitch_quant = Module._forced_pitch_quant = asm._forced_pitch_quant,
          _speex_encoder_init = Module._speex_encoder_init = asm._speex_encoder_init,
          _speex_decode_stereo_int = Module._speex_decode_stereo_int = asm._speex_decode_stereo_int,
          _vbr_analysis = Module._vbr_analysis = asm._vbr_analysis,
          _speex_lib_ctl = Module._speex_lib_ctl = asm._speex_lib_ctl,
          _speex_std_low_mode_request_handler = Module._speex_std_low_mode_request_handler = asm._speex_std_low_mode_request_handler,
          _vq_nbest = Module._vq_nbest = asm._vq_nbest,
          _lsp_quant_lbr = Module._lsp_quant_lbr = asm._lsp_quant_lbr,
          _sb_decoder_destroy = Module._sb_decoder_destroy = asm._sb_decoder_destroy,
          __spx_lpc = Module.__spx_lpc = asm.__spx_lpc,
          _speex_packet_to_header = Module._speex_packet_to_header = asm._speex_packet_to_header,
          _split_cb_shape_sign_unquant = Module._split_cb_shape_sign_unquant = asm._split_cb_shape_sign_unquant,
          _speex_bits_peek = Module._speex_bits_peek = asm._speex_bits_peek,
          _signal_mul = Module._signal_mul = asm._signal_mul,
          _residue_percep_zero16 = Module._residue_percep_zero16 = asm._residue_percep_zero16,
          _pitch_search_3tap = Module._pitch_search_3tap = asm._pitch_search_3tap,
          _sb_encoder_ctl = Module._sb_encoder_ctl = asm._sb_encoder_ctl,
          _scal_quant = Module._scal_quant = asm._scal_quant,
          _highpass = Module._highpass = asm._highpass,
          _speex_encode_int = Module._speex_encode_int = asm._speex_encode_int,
          _compute_weighted_codebook = Module._compute_weighted_codebook = asm._compute_weighted_codebook,
          _noise_codebook_quant = Module._noise_codebook_quant = asm._noise_codebook_quant,
          _independent_comalloc = Module._independent_comalloc = asm._independent_comalloc,
          _speex_mode_query = Module._speex_mode_query = asm._speex_mode_query,
          _ialloc = Module._ialloc = asm._ialloc,
          _split_cb_search_shape_sign = Module._split_cb_search_shape_sign = asm._split_cb_search_shape_sign,
          _nb_decode = Module._nb_decode = asm._nb_decode,
          _speex_lib_get_mode = Module._speex_lib_get_mode = asm._speex_lib_get_mode,
          _speex_decoder_init = Module._speex_decoder_init = asm._speex_decoder_init,
          _sb_decoder_ctl = Module._sb_decoder_ctl = asm._sb_decoder_ctl,
          _memset = Module._memset = asm._memset,
          _speex_bits_advance = Module._speex_bits_advance = asm._speex_bits_advance,
          _speex_stereo_state_destroy = Module._speex_stereo_state_destroy = asm._speex_stereo_state_destroy,
          _nb_encoder_ctl = Module._nb_encoder_ctl = asm._nb_encoder_ctl,
          _speex_default_user_handler = Module._speex_default_user_handler = asm._speex_default_user_handler,
          _filter_mem16 = Module._filter_mem16 = asm._filter_mem16,
          _nb_mode_query = Module._nb_mode_query = asm._nb_mode_query,
          _internal_memalign = Module._internal_memalign = asm._internal_memalign,
          _speex_header_free = Module._speex_header_free = asm._speex_header_free,
          _mallopt = Module._mallopt = asm._mallopt,
          _speex_encode_stereo = Module._speex_encode_stereo = asm._speex_encode_stereo,
          _speex_std_stereo_request_handler = Module._speex_std_stereo_request_handler = asm._speex_std_stereo_request_handler,
          _speex_decode = Module._speex_decode = asm._speex_decode,
          _lsp_unquant_lbr = Module._lsp_unquant_lbr = asm._lsp_unquant_lbr,
          _fir_mem16 = Module._fir_mem16 = asm._fir_mem16,
          _syn_percep_zero16 = Module._syn_percep_zero16 = asm._syn_percep_zero16,
          _noise_codebook_unquant = Module._noise_codebook_unquant = asm._noise_codebook_unquant,
          _nb_encoder_init = Module._nb_encoder_init = asm._nb_encoder_init,
          _speex_decode_native = Module._speex_decode_native = asm._speex_decode_native,
          __spx_autocorr = Module.__spx_autocorr = asm.__spx_autocorr,
          _malloc = Module._malloc = asm._malloc,
          _malloc_max_footprint = Module._malloc_max_footprint = asm._malloc_max_footprint,
          _speex_std_char_handler = Module._speex_std_char_handler = asm._speex_std_char_handler,
          _speex_bits_read_from = Module._speex_bits_read_from = asm._speex_bits_read_from,
          _valloc = Module._valloc = asm._valloc,
          _malloc_footprint = Module._malloc_footprint = asm._malloc_footprint,
          _speex_decoder_destroy = Module._speex_decoder_destroy = asm._speex_decoder_destroy,
          _multicomb = Module._multicomb = asm._multicomb,
          _qmf_synth = Module._qmf_synth = asm._qmf_synth,
          _scal_quant32 = Module._scal_quant32 = asm._scal_quant32,
          _signal_div = Module._signal_div = asm._signal_div,
          _speex_bits_init_buffer = Module._speex_bits_init_buffer = asm._speex_bits_init_buffer,
          _lsp_unquant_nb = Module._lsp_unquant_nb = asm._lsp_unquant_nb,
          _calloc = Module._calloc = asm._calloc,
          _forced_pitch_unquant = Module._forced_pitch_unquant = asm._forced_pitch_unquant,
          _split_cb_search_shape_sign_N1 = Module._split_cb_search_shape_sign_N1 = asm._split_cb_search_shape_sign_N1,
          _qmf_decomp = Module._qmf_decomp = asm._qmf_decomp,
          _speex_stereo_state_reset = Module._speex_stereo_state_reset = asm._speex_stereo_state_reset,
          _sb_encoder_destroy = Module._sb_encoder_destroy = asm._sb_encoder_destroy,
          _nb_decoder_init = Module._nb_decoder_init = asm._nb_decoder_init,
          _mallinfo = Module._mallinfo = asm._mallinfo,
          _speex_std_high_mode_request_handler = Module._speex_std_high_mode_request_handler = asm._speex_std_high_mode_request_handler,
          _malloc_stats = Module._malloc_stats = asm._malloc_stats,
          _speex_header_to_packet = Module._speex_header_to_packet = asm._speex_header_to_packet,
          _speex_init_header = Module._speex_init_header = asm._speex_init_header,
          _sb_decoder_init = Module._sb_decoder_init = asm._sb_decoder_init,
          _speex_encode_native = Module._speex_encode_native = asm._speex_encode_native,
          _speex_inband_handler = Module._speex_inband_handler = asm._speex_inband_handler,
          _realloc = Module._realloc = asm._realloc,
          _nb_encode = Module._nb_encode = asm._nb_encode,
          _speex_bits_init = Module._speex_bits_init = asm._speex_bits_init,
          _vq_nbest_sign = Module._vq_nbest_sign = asm._vq_nbest_sign,
          _sanitize_values32 = Module._sanitize_values32 = asm._sanitize_values32,
          _interp_pitch = Module._interp_pitch = asm._interp_pitch,
          _speex_std_vbr_request_handler = Module._speex_std_vbr_request_handler = asm._speex_std_vbr_request_handler,
          _compute_impulse_response = Module._compute_impulse_response = asm._compute_impulse_response,
          _iir_mem16 = Module._iir_mem16 = asm._iir_mem16,
          _pitch_gain_search_3tap = Module._pitch_gain_search_3tap = asm._pitch_gain_search_3tap,
          _nb_encoder_destroy = Module._nb_encoder_destroy = asm._nb_encoder_destroy,
          _speex_encoder_destroy = Module._speex_encoder_destroy = asm._speex_encoder_destroy,
          _open_loop_nbest_pitch = Module._open_loop_nbest_pitch = asm._open_loop_nbest_pitch,
          _memmove = Module._memmove = asm._memmove,
          _pitch_unquant_3tap = Module._pitch_unquant_3tap = asm._pitch_unquant_3tap,
          _speex_decode_stereo = Module._speex_decode_stereo = asm._speex_decode_stereo,
          _speex_bits_read_whole_bytes = Module._speex_bits_read_whole_bytes = asm._speex_bits_read_whole_bytes,
          _speex_encode_stereo_int = Module._speex_encode_stereo_int = asm._speex_encode_stereo_int,
          _compute_rms = Module._compute_rms = asm._compute_rms,
          _speex_decoder_ctl = Module._speex_decoder_ctl = asm._speex_decoder_ctl,
          runPostSets = Module.runPostSets = asm.runPostSets,
          dynCall_viiiiiiiiiiiii = Module.dynCall_viiiiiiiiiiiii = asm.dynCall_viiiiiiiiiiiii,
          dynCall_viiiiii = Module.dynCall_viiiiii = asm.dynCall_viiiiii,
          dynCall_vi = Module.dynCall_vi = asm.dynCall_vi,
          dynCall_v = Module.dynCall_v = asm.dynCall_v,
          dynCall_iiii = Module.dynCall_iiii = asm.dynCall_iiii,
          dynCall_ii = Module.dynCall_ii = asm.dynCall_ii,
          dynCall_viii = Module.dynCall_viii = asm.dynCall_viii,
          dynCall_iiiiiiiiiifiiiiiiiiii = Module.dynCall_iiiiiiiiiifiiiiiiiiii = asm.dynCall_iiiiiiiiiifiiiiiiiiii,
          dynCall_viiiifiiiiiiiifi = Module.dynCall_viiiifiiiiiiiifi = asm.dynCall_viiiifiiiiiiiifi,
          dynCall_iii = Module.dynCall_iii = asm.dynCall_iii,
          dynCall_viiii = Module.dynCall_viiii = asm.dynCall_viiii;
        Module.generateStructInfo = Runtime.generateStructInfo,
          Runtime.stackAlloc = function (e) {
            return asm.stackAlloc(e)
          },
          Runtime.stackSave = function () {
            return asm.stackSave()
          },
          Runtime.stackRestore = function (e) {
            asm.stackRestore(e)
          };
        var i64Math = null,
          initialStackTop;
        if (memoryInitializer) {
          function applyData(e) {
            HEAPU8.set(e, STATIC_BASE)
          }
          ENVIRONMENT_IS_NODE || ENVIRONMENT_IS_SHELL ? applyData(Module.readBinary(memoryInitializer)) : (addRunDependency("memory initializer"), Browser.asyncLoad(memoryInitializer,
            function (e) {
              applyData(e),
                removeRunDependency("memory initializer")
            },
            function (e) {
              throw "could not load memory initializer " + memoryInitializer
            }))
        }
        function ExitStatus(e) {
          this.name = "ExitStatus",
            this.message = "Program terminated with exit(" + e + ")",
            this.status = e
        }
        ExitStatus.prototype = new Error,
          ExitStatus.prototype.constructor = ExitStatus;
        var preloadStartTime = null,
          calledMain = !1;
        function run(e) {
          function r() {
            ensureInitRuntime(),
              preMain(),
              Module.calledRun = !0,
              Module._main && shouldRunNow && Module.callMain(e),
              postRun()
          }
          e = e || Module.arguments,
            null === preloadStartTime && (preloadStartTime = Date.now()),
            runDependencies > 0 ? Module.printErr("run() called, but dependencies remain, so not running") : (preRun(), runDependencies > 0 || (Module.setStatus ? (Module.setStatus("Running..."), setTimeout(function () {
              setTimeout(function () {
                Module.setStatus("")
              },
                1),
                ABORT || r()
            },
              1)) : r()))
        }
        function exit(e) {
          throw ABORT = !0,
          EXITSTATUS = e,
          STACKTOP = initialStackTop,
          exitRuntime(),
          new ExitStatus(e)
        }
        function abort(e) {
          throw e && (Module.print(e), Module.printErr(e)),
          ABORT = !0,
          EXITSTATUS = 1,
          "abort() at " + stackTrace()
        }
        if (dependenciesFulfilled = function e() {
          !Module.calledRun && shouldRunNow && run(),
            Module.calledRun || (dependenciesFulfilled = e)
        },
          Module.callMain = Module.callMain = function (e) {
            assert(0 == runDependencies, "cannot call main when async dependencies remain! (listen on __ATMAIN__)"),
              assert(0 == __ATPRERUN__.length, "cannot call main when preRun functions remain to be called"),
              e = e || [],
              ENVIRONMENT_IS_WEB && null !== preloadStartTime && Module.printErr("preload time: " + (Date.now() - preloadStartTime) + " ms"),
              ensureInitRuntime();
            var r = e.length + 1;
            function t() {
              for (var e = 0; e < 3; e++) n.push(0)
            }
            var n = [allocate(intArrayFromString("/bin/this.program"), "i8", ALLOC_NORMAL)];
            t();
            for (var i = 0; i < r - 1; i += 1) n.push(allocate(intArrayFromString(e[i]), "i8", ALLOC_NORMAL)),
              t();
            n.push(0),
              n = allocate(n, "i32", ALLOC_NORMAL),
              initialStackTop = STACKTOP;
            try {
              var o = Module._main(r, n, 0);
              Module.noExitRuntime || exit(o)
            } catch (e) {
              if (e instanceof ExitStatus) return;
              if ("SimulateInfiniteLoop" == e) return void (Module.noExitRuntime = !0);
              throw e && "object" == typeof e && e.stack && Module.printErr("exception thrown: " + [e, e.stack]),
              e
            } finally {
              calledMain = !0
            }
          },
          Module.run = Module.run = run, Module.exit = Module.exit = exit, Module.abort = Module.abort = abort, Module.preInit) for ("function" == typeof Module.preInit && (Module.preInit = [Module.preInit]); Module.preInit.length > 0;) Module.preInit.pop()();
        var shouldRunNow = !0;
        Module.noInitialRun && (shouldRunNow = !1),
          run(),
          __webpack_exports__.a = Module
      }).call(__webpack_exports__, "/")
    },
    1398: function (e, r, t) {
      "use strict";
      var n = t(228),
        i = t(229),
        o = t(437),
        a = t(128);
      function s(e) {
        o.a.apply(this, arguments),
          this.floating_point = !e.lpcm && !0,
          this.ctl_func = a.a._speex_decoder_ctl,
          this.params = e,
          this.enh = e.enh || 1,
          this.frame_size = e.frame_size || 160,
          this.bits_size = void 0 !== e.bits_size ? e.bits_size : SpeexEncoder.quality_bits[e.quality || 8]
      }
      i.a.inherit(s, o.a),
        s.prototype.init = function () {
          var e = a.a.allocate(s.types.SpeexBits.__size__, "i8", a.a.ALLOC_NORMAL);
          a.a._speex_bits_init(e);
          var r = a.a.allocate(1, "i32", a.a.ALLOC_STACK),
            t = a.a._speex_decoder_init(this.mode);
          a.a.setValue(r, this.enh, "i32"),
            a.a._speex_decoder_ctl(t, s.SPEEX_SET_ENH, r),
            a.a.setValue(r, this.params.sample_rate, "i32"),
            a.a._speex_decoder_ctl(t, s.SPEEX_SET_SAMPLING_RATE, r),
            a.a._speex_decoder_ctl(t, s.SPEEX_GET_FRAME_SIZE, r),
            this.frame_size = a.a.getValue(r, "i32"),
            this.state = t,
            this.bits = e,
            this.buffer = a.a.allocate(this.frame_size, "i16", a.a.ALLOC_STATIC),
            this.output = new Float32Array(1)
        },
        s.prototype.read = function (e, r, t) {
          var n = this.input,
            o = e + r > t.length ? t.length - e : r,
            s = t.constructor == String.prototype.constructor; !n && (n = a.a.allocate(this.bits_size, "i8", a.a.ALLOC_NORMAL));
          for (var l = e - 1,
            u = 0; ++l < e + o; u += 1) a.a.setValue(n + u, s ? i.a.parseInt(t[l]) : t[l], "i8");
          return a.a._speex_bits_read_from(this.bits, n, o),
            this.input = n,
            o
        },
        s.prototype.process = function (e, r) {
          var t, n = 0,
            i = 0,
            o = 0,
            s = this.bits_size,
            l = Math.ceil(e.length / s),
            u = this.frame_size * l,
            c = a.a._speex_decode_int,
            f = !!this.params.benchmark;
          this.buffer || (this.buffer = a.a.allocate(this.frame_size, "i16", a.a.ALLOC_STACK));
          var d = this.bits,
            _ = (this.input, this.buffer),
            h = this.state;
          for (this.output.length < u && (this.output = this.floating_point ? new Float32Array(u) : new Int16Array(u)); i < e.length;) {
            if (f && console.time("decode_packet_offset_" + i), s = r && r.length > 0 ? r[o] : this.bits_size, t = this.read(i, s, e), a.a._speex_bits_reset(d), ret = c(h, d, _), ret < 0) return ret;
            this.write(n, this.frame_size, _),
              f && console.timeEnd("decode_packet_offset_" + i),
              i += t,
              n += this.frame_size,
              o++
          }
          return this.output.subarray(0, n)
        },
        s.prototype.close = function () {
          this.state && (a.a._speex_bits_destroy(this.bits), a.a._speex_decoder_destroy(this.state))
        },
        s.prototype.firstInit = function () {
          var e = {};
          return e.i32ptr = this.i32ptr,
            e.state = this.state,
            e.bits = this.bits,
            e.buffer = this.buffer,
            e.frame_size = this.frame_size,
            e.output = new Float32Array(1),
            e
        },
        s.prototype.write = function (e, r, t) {
          for (var n, i = 0,
            o = e - 1; ++o < e + r; i += 2) n = a.a.getValue(t + i, "i16"),
              this.output[o] = this.floating_point ? n / 32768 : n
        },
        i.a.merge(s, n.a),
        r.a = s
    },
    1399: function (e, r, t) {
      "use strict";
      var n = t(228),
        i = t(229),
        o = t(437),
        a = t(128);
      function s(e) {
        o.a.apply(this, arguments),
          this.quality = e.quality || 8,
          this.enh = e.enh || 1,
          this.buffer_size = e.buffer_size || 200,
          this.floating_point = !!e.floating_point,
          this.frame_size = e.frame_size || 160,
          this.bits_size = e.bits_size || s.quality_bits[this.quality]
      }
      i.a.inherit(s, o.a),
        s.quality_bits = {
          1: 10,
          2: 15,
          3: 20,
          4: 20,
          5: 28,
          6: 28,
          7: 38,
          8: 38,
          9: 46,
          10: 46
        },
        s.prototype.init = function (e) {
          var r, t = a.a.allocate(1, "i32", a.a.ALLOC_STACK),
            i = a.a.allocate(2e3, "i8", a.a.ALLOC_NORMAL);
          a.a._speex_bits_init(i),
            r = a.a._speex_encoder_init(this.mode),
            a.a._speex_encoder_ctl(r, n.a.SPEEX_GET_FRAME_SIZE, t),
            this.frame_size = a.a.getValue(t, "i32"),
            this.buffer_size = this.buffer_size,
            a.a.setValue(t, this.quality, "i32"),
            a.a._speex_encoder_ctl(r, n.a.SPEEX_SET_QUALITY, t),
            this.state = r,
            this.bits = i,
            this.input = a.a.allocate(this.frame_size, "i16", a.a.ALLOC_NORMAL),
            this.buffer = a.a.allocate(this.buffer_size, "i8", a.a.ALLOC_NORMAL)
        },
        s.prototype.read = function (e, r, t) {
          for (var n = this.input,
            i = e + r > t.length ? t.length - e : r, o = e - 1, s = 0; ++o < e + i; s += 2) a.a.setValue(n + s, t[o], "i16");
          return i
        },
        s.prototype.write = function (e, r, t) {
          for (var n = 0,
            i = e - 1; ++i < e + r; n += 1) this.output[i] = a.a.getValue(t + n, "i8")
        },
        s.prototype.process = function (e) {
          var r, t, n = 0,
            i = 0,
            o = [],
            s = this.floating_point ? a.a._speex_encode : a.a._speex_encode_int,
            l = !!this.params.benchmark,
            u = Math.ceil((e.length - 184) / this.frame_size),
            c = this.bits_size * u; (!this.output || this.output.length < c) && (this.output = new Uint8Array(c));
          var f = this.bits,
            d = this.input,
            _ = this.buffer,
            h = this.state;
          for (this.output; i < e.length - 184;) l && console.time("encode_packet_offset_" + i),
            a.a._speex_bits_reset(f),
            r = this.read(i, this.frame_size, e),
            s(h, d, f),
            t = a.a._speex_bits_write(f, _, this.buffer_size),
            this.write(n, t, _),
            l && console.timeEnd("encode_packet_offset_" + i),
            n += t,
            i += r,
            o.push(t);
          return [this.output.subarray(0, n), o]
        },
        s.prototype.close = function () {
          this.state && (a.a._speex_bits_destroy(this.bits), a.a._speex_encoder_destroy(this.state))
        },
        i.a.merge(s, n.a),
        r.a = s
    },
    1400: function (e, r, t) {
      "use strict";
      Object.defineProperty(r, "__esModule", {
        value: !0
      });
      var n = t(625),
        i = t.n(n),
        o = t(627),
        a = t.n(o),
        s = t(628),
        l = t.n(s),
        u = t(624),
        c = t(626),
        f = t.n(c),
        d = {
          applicationId: "null",
          timestamp: "1504495600",
          sig: "a705fddf9cad3306b71d5c1098d97f39af5628d8",
          userId: "any",
          coreTimeout: 1e4,
          serverTimeout: 1e4,
          engineLinksAddress: ["api.cloud.ssapi.cn", "gate-01.api.cloud.ssapi.cn", "gate-02.api.cloud.ssapi.cn", "gate-03.api.cloud.ssapi.cn"],
          logIsOpen: !0,
          coreType: "en.sent.score",
          engineFirstInitDone: function () { },
          micAllowCallback: function () { },
          micForbidCallback: function () { },
          micVolumeCallback: function (e) { },
          logAccept: function (e) { },
          engineBackResultDone: function (e) { },
          engineBackResultFail: function (e) { },
          engineConnectTimeOut: function () { },
          engineServerTimeOut: function () { },
          playAudioComplete: function (e) { },
          playAudioError: function (e) { },
          noNetwork: function () { },
          noWebsocketAddress: function () { },
          JSSDKNotSupport: function () { },
          processorLenght: 16384,
          sampleRate: 0
        },
        _ = {
          audioVoice: .8,
          recordVoice: 1.5,
          micVoice: function (e) {
            for (var r = 0,
              t = 0; t < e.length; t++) r = e[t] > r ? e[t] : r;
            return r = r < 2 ? r : 2,
              Math.round(50 * r)
          }
        },
        h = {
          sampleRate: 8e3,
          numChannels: 1,
          encoder: {},
          recBuffers: [],
          toSpeex: function (e) {
            var r, t = this,
              n = new FileReader;
            n.readAsArrayBuffer(e),
              n.onload = function (e) {
                if (p.speexState.hasOwnProperty("spxcodec") || (l.a.console("infor", 12111, "no have spxcodec"), p.speexState.first = !0), 1 == p.lastFrame) var n = u.a.encodeFile(e.target.result, p.speexState, 4);
                else n = u.a.encodeFile(e.target.result, p.speexState);
                r = t.dataURLtoBlob(btoa(n[0])),
                  p.speexState.spxcodec = n[1],
                  p.speexState.first = !1,
                  t.send(r)
              }
          },
          record: function (e) {
            this.recBuffers.push(e),
              this.encodeWav()
          },
          start: function (e) {
            this.sampleRate = p.sample,
              this.encoder = new f.a(this.sampleRate / 2, this.numChannels)
          },
          encodeWav: function () {
            if (this.recBuffers) {
              for (; this.recBuffers.length > 0;) this.encoder.encode(this.recBuffers.shift());
              this.toSpeex(this.encoder.finish("audio/wav"))
            }
          },
          send: function (e) {
            var r, t = new FileReader;
            t.readAsArrayBuffer(e),
              t.onload = function (e) {
                if (1 == p.lastFrame || 1 == p.recordState) if (r = e.target.result, p.audioArray.push(r), l.a.console("infor", 600, "record state number is " + l.a.state()), 1 == l.a.state()) {
                  if (l.a.console("infor", 600, "asm处理完毕，websocket开始发送"), p.evaluationData.first = w.isFirst, l.a.console("infor", 600, "normal record"), p.cache.length > 0) {
                    for (var t = 0; t < p.audioArray.length; t++) l.a.send(p.audioArray[t], p.evaluationData, !1),
                      l.a.console("infor", 600, "websocket需要发送缓存");
                    p.cache = []
                  } else l.a.send(r, p.evaluationData, !1);
                  l.a.console("infor", 600, "websocket发送完毕"),
                    1 == p.lastFrame && 0 == p.recordState && (p.lastFrame = !1, 1 == l.a.state() ? (0 == p.audioArray.length ? (l.a.console("infor", 600, "audioArray null"), l.a.getEngineData(JSON.stringify({
                      errId: 400233,
                      error: "audioArray null",
                      eof: 1
                    })), l.a.inclose()) : (l.a.console("infor", 600, "Stop Send and get the results"), l.a.stopSend()), m.restoreState()) : (l.a.console("infor", 600, "ws state != 1 when send stop"), m.recordAudioCacheSend()))
                } else l.a.console("infor", 600, "exception record"),
                  l.a.console("infor", 600, "录音数据加入缓存"),
                  p.cache.push(r);
                else l.a.console("warn", 812, "Eval has stopped !")
              }
          },
          clear: function () {
            "function" == typeof this.encoder.cancel && this.encoder.cancel(),
              p.speexState.first = !1,
              this.recBuffers = []
          },
          dataURLtoBlob: function (e) {
            for (var r = e.split(","), t = atob(r[0]), n = t.length, i = new Uint8Array(n); n--;) i[n] = t.charCodeAt(n);
            return new Blob([i], {
              type: "audio/ogg"
            })
          },
          resampleAudioBuffer: function (e, r) {
            var t = e.numberOfChannels,
              n = e.length * p.sample / e.sampleRate,
              i = new OfflineAudioContext(t, n, p.sample),
              o = i.createBufferSource();
            o.buffer = e,
              i.oncomplete = function (e) {
                var t = e.renderedBuffer;
                r({
                  getAudioBuffer: function () {
                    return t
                  }
                })
              },
              o.connect(i.destination),
              o.start(0),
              i.startRendering()
          }
        },
        p = {
          stream: null,
          audioContext: {},
          recorder: null,
          isPauseSend: !1,
          recordStopTimer: null,
          audioArray: [],
          cache: [],
          evaluationData: {},
          recordState: !1,
          audio: null,
          evaluateAddress: [],
          coreType: d.coreType,
          lastFrame: !1,
          lastTimes: 0,
          uploadLog: {
            optCoreType: void 0,
            coreType: void 0
          },
          cacheTimer: null,
          speexState: {
            first: !0,
            firstFrame: !1,
            sequence: -1
          },
          sample: 16e3,
          firstHealthyCheck: !0,
          timeout: 0,
          serverTimeOutControl: {
            state: !1,
            timer: null,
            request_id: ""
          }
        },
        m = {
          jssdkSupport: function () {
            var e = !0; ("mediaDevices" in navigator && "getUserMedia" in navigator.mediaDevices || "getUserMedia" in navigator) && ("AudioContext" in window || "webkitAudioContext" in window) && "WebSocket" in window || (e = !1),
              e || m.checkType(d.JSSDKNotSupport, "Function") && d.JSSDKNotSupport()
          },
          oriAudio: function () {
            var e = new Blob(p.oriAudioArray, {
              type: "audio/wav"
            }),
              r = URL.createObjectURL(e);
            document.getElementById("local").setAttribute("href", r)
          },
          localAudio: function () {
            var e = new Blob(p.audioArray, {
              type: "audio/ogg"
            }),
              r = URL.createObjectURL(e);
            document.getElementById("local").setAttribute("href", r)
          },
          uploadLog: function (e) {
            i.a.ajax({
              type: "POST",
              url: "https://log.client.ssapi.cn/bus?sdk_type=jssdk&eid=1&est=7&applicationId=" + d.applicationId + "&uid=" + d.userId,
              data: {
                _optCoreType: p.uploadLog,
                getResult: e
              },
              timeout: 1500,
              done: function (e) {
                l.a.console("infor", 600, "Error Log Upload Success")
              },
              fail: function () {
                l.a.console("infor", 600, "Error Log Upload Fail")
              }
            })
          },
          getEvaluateAddress: function (e) {
            if (e.length > 0) {
              p.timeout = p.timeout + 1e3,
                l.a.console("infor", 702, "healthy check timeout：" + p.timeout);
              var r = e.shift();
              i.a.ajax({
                type: "GET",
                url: "https://" + r + "/entry_param_config",
                data: {
                  application_id: d.applicationId,
                  client_type: "jssdk"
                },
                timeout: p.timeout,
                done: function (e) {
                  (e = JSON.parse(e)).hasOwnProperty("ginger_endpoints") ? (p.evaluateAddress = e.ginger_endpoints.wss, m.evaluateAddressEnabled(p.evaluateAddress)) : l.a.console("error", 701, "no ginger_endpoints attribute")
                },
                fail: function (r) {
                  m.getEvaluateAddress(e)
                },
                requestTimeout: function () {
                  l.a.console("infor", 702, r + "已经超时")
                }
              })
            } else m.checkType(d.noWebsocketAddress, "Function") ? d.noWebsocketAddress() : l.a.console("error", 702, "noWebsocketAddress is not Function"),
              l.a.console("infor", 702, "check evaluateArray length is 0")
          },
          evaluateAddressEnabled: function (e) {
            if (e.length > 0) {
              var r = e.shift();
              i.a.ajax({
                type: "GET",
                url: "https://" + r + "/healthy_check",
                timeout: p.timeout,
                done: function (e) {
                  "OK" === e ? (m.websocketServer(r), i.a.setCookie("engine_jssdk_http", r)) : l.a.console("error", 703, "evaluateAddressEnabled return data error")
                },
                fail: function (r) {
                  m.evaluateAddressEnabled(e)
                }
              })
            } else l.a.console("error", 702, "check addressArray length is 0")
          },
          browserCompatible: function () {
            window.OfflineAudioContext = window.OfflineAudioContext || window.webkitOfflineAudioContext,
              navigator.getUserMedia = navigator.getUserMedia || navigator.webkitGetUserMedia || navigator.mozGetUserMedia || navigator.msGetUserMedia
          },
          initEngine: function (e) {
            l.a.init({
              connect_id: m.createUuid()
            }),
              l.a.connect(e),
              p.uploadLog.optCoreType = p.coreType,
              p.uploadLog.coreType = e,
              p.coreType = e
          },
          evalTime: function (e, r) {
            var t = 0;
            if (this.checkType(e, "String")) {
              var n = r.trim().split(".")[0];
              t = "en" == n ? 2e3 + 600 * e.trim().split(" ").length : "cn" == n ? 2e3 + 600 * e.trim().split("").length : 5e3
            } else t = 5e3;
            return t
          },
          restoreState: function () {
            l.a.console("infor", 600, "params restore"),
              p.recordState = !1,
              p.lastFrame = !1,
              p.audioArray = [],
              p.cache = [],
              p.evaluationData = {},
              h.clear(),
              "running" === p.audioContext.state && (l.a.console("infor", 600, "restoreState : close record"), p.audioContext.close()),
              w.isFirst = 0
          },
          checkRecordParams: function (e) {
            e = e;
            if (this.checkType(e, "String") && (e = JSON.parse(e)), this.checkType(e, "Object")) return e.coreType && this.checkType(e.coreType, "String") ? this.checkType(e.evalTime, "Undefined") ? e.evalTime = m.evalTime(e.refText, e.coreType) : this.checkType(e.evalTime, "Number") || this.checkType(e.evalTime, "Null") || l.a.console("error", 705, "record evalTime param must Number or null") : l.a.console("error", 702, "CoreType not empty and is String"),
              e.request_id = m.createUuid(),
              e.tokenId = m.createUuid(),
              e.sampleRate = p.sample,
              e;
            l.a.console("error", 705, "record param must Object")
          },
          websocketConnectReady: function (e) {
            "running" === p.audioContext.state && (p.audioContext.close(), l.a.console("infor", 600, "websocketConnectReady :audioContext closed")),
              p.audioContext = new (window.AudioContext || window.webkitAudioContext);
            var r = p.audioContext.createGain(),
              t = p.audioContext.createMediaStreamSource(p.stream);
            p.recorder = p.audioContext.createScriptProcessor(d.processorLenght, 1, 1),
              r.gain.value = _.recordVoice,
              t.connect(r),
              r.connect(p.recorder),
              p.recorder.connect(p.audioContext.destination),
              l.a.console("infor", 600, "Recording Environment Already")
          },
          autoStopRecord: function (e) {
            p.recordStopTimer && clearTimeout(p.recordStopTimer),
              p.recordStopTimer = setTimeout(function () {
                b()
              },
                e)
          },
          getEngineData: function (e) {
            l.a.console("infor", 600, "return result");
            var r = e;
            if (m.checkType(e, "String") && (r = JSON.parse(e)), r.hasOwnProperty("errId")) E(),
              m.checkType(d.engineBackResultFail, "Function") ? (m.uploadLog(r), d.engineBackResultFail(JSON.stringify(r))) : l.a.console("error", 702, "engine fail callback is not Function");
            else if (m.checkType(d.engineBackResultDone, "Function")) {
              if (1 == r.eof && (clearTimeout(p.serverTimeOutControl.timer), p.serverTimeOutControl.timer = null, r.params && r.params.request && r.params.request.request_id && r.params.request.request_id != p.serverTimeOutControl.request_id)) return void l.a.console("warn", 811, "request_id is not matching");
              d.engineBackResultDone(JSON.stringify(r))
            } else l.a.console("error", 702, "engine success callback is not Function")
          },
          recordAudioCacheSend: function () {
            l.a.console("infor", 602, "Audio cache"),
              1 == l.a.state() ? (p.audioArray.length > 0 ? (p.audioArray.forEach(function (e) {
                l.a.send(e, p.evaluationData, !1)
              }), l.a.stopSend()) : (l.a.console("error", 602, "Audio Cache Fail"), l.a.getEngineData(JSON.stringify({
                errId: 400233,
                error: "Audio Cache Fail",
                eof: 1
              }))), m.restoreState()) : l.a.isWebsocketTimeout() ? (clearTimeout(p.cacheTimer), m.restoreState(), l.a.console("infor", 600, "clear audio cacheTimer")) : p.cacheTimer = setTimeout(function () {
                m.recordAudioCacheSend()
              },
                500)
          },
          checkType: function (e, r) {
            return Object.prototype.toString.call(e) === "[object " + r + "]"
          },
          errAnalyse: function (e) {
            switch (e.code || e.name) {
              case "PERMISSION_DENIED":
              case "PermissionDeniedError":
                l.a.console("error", 802, "the user refuses to provide information.");
                break;
              case "NOT_SUPPORTED_ERROR":
              case "NotSupportedError":
                l.a.console("error", 803, "the browser does not support hardware devices");
                break;
              case "MANDATORY_UNSATISFIED_ERROR":
              case "MandatoryUnsatisfiedError":
                l.a.console("error", 804, "the specified hardware device can not be found");
                break;
              default:
                l.a.console("error", 805, "unable to open the microphone : " + e)
            }
          },
          connectOnerror: function () {
            navigator.onLine ? p.evaluateAddress.length > 0 ? m.evaluateAddressEnabled(p.evaluateAddress) : m.getEvaluateAddress(d.engineLinksAddress) : (m.checkType(d.noNetwork, "Function") && d.noNetwork(), l.a.console("error", 900, "no network"))
          },
          websocketServer: function (e) {
            l.a.server = "wss://" + e + "/",
              m.initEngine(p.coreType)
          },
          websocketConnect: function (e) {
            1 == l.a.state() ? p.coreType !== e && (l.a.console("infor", 600, "coreType from " + p.coreType + " to " + e), l.a.inclose(), m.initEngine(e)) : m.initEngine(e)
          },
          createUuid: function () {
            for (var e, r, t = d.applicationId,
              n = d.userId,
              i = [], o = 0; o < 20; o++) e = parseInt(62 * Math.random()),
                i[o] = "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"[e];
            return r = i.join("") + t + n + parseInt((new Date).getTime() / 1e3),
              a()(r)
          },
          init: function () {
            m.browserCompatible(),
              p.sample = 4 == m.browserType() ? 44100 : 16e3,
              d.sampleRate > 0 && (l.a.console("infor", 600, "Custom sampleRate：" + d.sampleRate), p.sample = d.sampleRate);
            var e = i.a.getCookie("engine_jssdk_http");
            e ? this.websocketServer(e) : m.getEvaluateAddress(d.engineLinksAddress)
          },
          browserType: function () {
            var e = ["IE", "Firefox", "Opera", "Chrome", "Safari", "Unkown"],
              r = window.navigator.userAgent,
              t = void 0 != window.ActiveXObject && -1 != r.indexOf("MSIE"),
              n = -1 != r.indexOf("Firefox"),
              i = void 0 != window.opr,
              o = r.indexOf("Chrome") && window.chrome,
              a = -1 != r.indexOf("Safari") && -1 != r.indexOf("Version");
            return t ? e.indexOf("IE") : n ? e.indexOf("Firefox") : i ? e.indexOf("Opera") : o ? e.indexOf("Chrome") : a ? e.indexOf("Safari") : e.indexOf("Unkown")
          }
        };
      function w(e) {
        if (m.checkType(e, "Object")) for (var r in e) d[r] = e[r];
        else l.a.console("error", 705, "param must Object");
        l.a.init({
          applicationId: d.applicationId,
          timestamp: d.timestamp,
          sig: d.sig,
          userId: d.userId
        }),
          l.a.engineFirstInitDone = d.engineFirstInitDone,
          l.a.getEngineData = m.getEngineData,
          l.a.logIsOpen = d.logIsOpen,
          l.a.logAccept = d.logAccept,
          l.a.connectOnerror = m.connectOnerror,
          l.a.engineConnectTimeOut = d.engineConnectTimeOut,
          l.a.coreTimeout = d.coreTimeout,
          l.a.engineServerTimeOut = d.engineServerTimeOut,
          l.a.serverTimeout = d.serverTimeout,
          l.a.createUuid = m.createUuid,
          m.init(),
          navigator.mediaDevices && navigator.mediaDevices.getUserMedia ? navigator.mediaDevices.getUserMedia({
            audio: !0
          }).then(function (e) {
            p.stream = e,
              m.checkType(d.micAllowCallback, "Function") && d.micAllowCallback()
          }).
            catch(function (e) {
              m.checkType(d.micForbidCallback, "Function") && d.micForbidCallback(),
                m.errAnalyse(e)
            }) : navigator.getUserMedia ? navigator.getUserMedia({
              audio: !0
            },
              function (e) {
                p.stream = e,
                  m.checkType(d.micAllowCallback, "Function") && d.micAllowCallback()
              },
              function (e) {
                m.checkType(d.micForbidCallback, "Function") && d.micForbidCallback(),
                  m.errAnalyse(e)
              }) : l.a.console("error", 700, "Browser Not Support Recording"),
          this.startRecord = function (e, r, t) {
            !
              function (e, r, t) {
                if (window.navigator.onLine) if (p.recordState || p.lastFrame) l.a.console("warn", 801, "Please do it in order first stopRecord");
                else {
                  m.checkType(r, "Function") && (d.engineBackResultDone = r),
                    m.checkType(t, "Function") && (d.engineBackResultFail = t),
                    clearTimeout(p.serverTimeOutControl.timer),
                    p.serverTimeOutControl.timer = null,
                    w.sequence = -1,
                    w.isFirst = 0,
                    p.speexState.firstFrame = !0,
                    p.speexState.sequence = -1,
                    p.audioArray = [],
                    p.cache = [],
                    p.evaluationData = m.checkRecordParams(e),
                    p.serverTimeOutControl.request_id = p.evaluationData.request_id,
                    m.websocketConnect(p.evaluationData.coreType),
                    l.a.console("infor", 600, "Start Recording Browser " + navigator.appVersion + " " + navigator.platform);
                  var n = [];
                  m.websocketConnectReady(p.evaluationData.coreType),
                    p.recordState = !0,
                    p.lastFrame = !1,
                    p.recorder.onaudioprocess = function (e) {
                      if (p.speexState.firstFrame && (l.a.console("infor", 600, " 第一帧数据 "), null !== p.evaluationData.evalTime && m.autoStopRecord(p.evaluationData.evalTime)), p.recordState) {
                        1 == p.lastFrame && ("running" === p.audioContext.state && (p.audioContext.close(), l.a.console("infor", 600, "websocket 发送最后一帧"), p.audioContext = {}), p.recordState = !1, p.recorder.disconnect());
                        var r = _.micVoice(e.inputBuffer.getChannelData(0));
                        m.checkType(d.micVolumeCallback, "Function") ? d.micVolumeCallback(r) : l.a.console("error", 702, "mic volume callback is not Function"),
                          44100 == p.sample && e.inputBuffer.sampleRate == p.sample && 1 == e.inputBuffer.numberOfChannels ? (n[0] = e.inputBuffer.getChannelData(0), h.record(n)) : h.resampleAudioBuffer(e.inputBuffer,
                            function (e) {
                              n[0] = e.getAudioBuffer().getChannelData(0),
                                h.record(n)
                            })
                      }
                    },
                    h.start(p.recorder.bufferSize)
                } else d.noNetwork(),
                  l.a.console("error", 900, "no network")
              }(e, r, t)
          },
          this.stopRecord = function () {
            b()
          },
          this.cancelRecord = function () {
            E()
          },
          this.loadAudio = function (e) {
            return function (e) {
              p.audio ||
                function () {
                  l.a.console("infor", 600, "init Audio"),
                    p.audio = new Audio,
                    p.audio.preload = "auto",
                    p.audio.volume = _.audioVoice,
                    m.checkType(d.playAudioComplete, "Function") ? p.audio.addEventListener("ended", d.playAudioComplete, !1) : l.a.console("error", 705, "playAudioComplete param must Function");
                  m.checkType(d.playAudioError, "Function") ? p.audio.addEventListener("error", d.playAudioError, !1) : l.a.console("error", 705, "playAudioError param must Function")
                }();
              e && m.checkType(e, "String") && (p.audio.src = e, p.audio.load());
              return p.audio
            }(e)
          },
          this.playAudio = function () {
            p.audio ? p.audio.play() : l.a.console("warn", 801, "Please do it in order first initAudio")
          },
          this.pauseAudio = function () {
            p.audio ? p.audio.pause() : l.a.console("warn", 801, "Please do it in order first playAudio")
          },
          this.stopAudio = function () {
            p.audio ? (p.audio.pause(), p.audio.currentTime = 0) : l.a.console("warn", 801, "Please do it in order first playAudio")
          },
          this.getDuration = function () {
            return function () {
              if (p.audio) return p.audio.duration;
              l.a.console("warn", 801, "Please do it in order first playAudio")
            }()
          },
          this.getCurrentTime = function () {
            return function () {
              if (p.audio) return p.audio.currentTime;
              l.a.console("warn", 801, "Please do it in order first playAudio")
            }()
          },
          this.sendCacheAudio = function (e) {
            return sendCacheAudio(e)
          },
          this.setAudioVolume = function (e) {
            !
              function (e) {
                l.a.console("infor", 600, "adjust play volume"),
                  e >= 0 && e <= 100 ? (_.audioVoice = e / 100, p.audio && (p.audio.volume = _.audioVoice)) : l.a.console("error", 706, "play volume is 0-100")
              }(e)
          },
          this.setMicVolume = function (e) {
            !
              function (e) {
                l.a.console("infor", 600, "adjust recording volume"),
                  e >= 0 && e <= 200 ? _.recordVoice = e / 100 : l.a.console("error", 706, "record volume is 0-200")
              }(e)
          },
          this.wholeFileUpload = function (e, r, t) {
            !
              function (e, r) {
                if (!m.checkType(r, "Object")) return l.a.console("error", 705, "param must Object"),
                  !1;
                if (!m.checkType(r.coreType, "String")) return l.a.console("error", 705, "wholeFileUpload coreType must String"),
                  !1;
                var t, n, i, o;
                r.request_id = m.createUuid(),
                  r.tokenId = m.createUuid(),
                  u.a.readFile(e,
                    function (a) {
                      t = e.target.files[0],
                        (n = new FileReader).readAsArrayBuffer(t),
                        n.onload = function (e) {
                          i = u.a.encodeFile(e.target.result),
                            o = h.dataURLtoBlob(btoa(i)),
                            l.a.send(o, r, !0)
                        }
                    }),
                  p.coreType = r.coreType
              }(e, r)
          },
          this.destroyEngine = function () {
            !
              function () {
                l.a.console("infor", 600, "~ destroy Engine"),
                  p.recordState = !1,
                  "running" === p.audioContext.state && (l.a.console("infor", 600, "~ destroy Engine ~~~~~ close record"), p.audioContext.close());
                p.audioContext = !1,
                  p.recorder && (p.recorder.disconnect(), p.recorder = null);
                p.stream = null,
                  m.restoreState(),
                  p.serverTimeOutControl.request_id = "",
                  clearTimeout(p.serverTimeOutControl.timer),
                  p.serverTimeOutControl.timer = null,
                  p.recordStopTimer && clearTimeout(p.recordStopTimer);
                l.a.inclose(),
                  clearTimeout(p.cacheTimer)
              }()
          }
      }
      function b() {
        l.a.console("infor", 600, "Stop Recording"),
          1 == p.recordState && 0 == p.lastFrame ? (p.recordStopTimer && clearTimeout(p.recordStopTimer), p.lastFrame = !0, p.serverTimeOutControl.timer = setTimeout(function () {
            l.a.console("error", 600, "Stop Recording -> serverTimeOut"),
              p.serverTimeOutControl.request_id = "",
              clearTimeout(p.serverTimeOutControl.timer),
              p.serverTimeOutControl.timer = null,
              d.engineBackResultFail(JSON.stringify({
                eof: 1,
                errId: 16386,
                errMsg: "Server timeout!"
              })),
              m.restoreState()
          },
            d.serverTimeout)) : l.a.console("warn", 801, "Please do it in order first startRecord")
      }
      function E() {
        p.recordState ? (l.a.console("infor", 600, "cancel recording"), p.recordStopTimer && clearTimeout(p.recordStopTimer), "running" === p.audioContext.state && p.audioContext.close(), p.serverTimeOutControl.request_id = "", clearTimeout(p.serverTimeOutControl.timer), p.serverTimeOutControl.timer = null, m.restoreState(), l.a.inclose()) : l.a.console("infor", 600, "Not recording")
      }
      w.isFirst = 0,
        w.sequence = -1,
        window.EngineEvaluat = w
    },
    1401: function (e, r, t) {
      "use strict";
      var n = t(436),
        i = t.n(n);
      function o(e) {
        for (var r, t = o.table,
          n = 0; n < e.length; n++) r = r << 8 ^ t[r >> 24 & 255 ^ e.charCodeAt(n)];
        return r
      }
      function a(e, r) {
        var t = r || {};
        this.stream = e,
          this.pageExpr = new i.a("capturePattern:4/char,version:1,headerType:1,granulePos:8,serial:4,sequence:4,checksum:4,pageSegments:1,segments:pageSegments/char,frames:_,", {
            bytes: !0,
            bigEndian: !1
          }),
          this.rawPages = [],
          this.pages = [],
          this.pageIdx = 0,
          this.frames = [],
          this.data = null,
          this.segments = [],
          this.unpacked = !1,
          this.file = !!t.file,
          this.error = (r || {}).error ||
          function (e) { }
      }
      Array.prototype.chunk = function (e) {
        var r = this;
        return [].concat.apply([], r.map(function (t, n) {
          return n % e ? [] : [r.slice(n, n + e)]
        }))
      },
        o.table = [0, 79764919, 159529838, 222504665, 319059676, 398814059, 445009330, 507990021, 638119352, 583659535, 797628118, 726387553, 890018660, 835552979, 1015980042, 944750013, 1276238704, 1221641927, 1167319070, 1095957929, 1595256236, 1540665371, 1452775106, 1381403509, 1780037320, 1859660671, 1671105958, 1733955601, 2031960084, 2111593891, 1889500026, 1952343757, 2552477408, 2632100695, 2443283854, 2506133561, 2334638140, 2414271883, 2191915858, 2254759653, 3190512472, 3135915759, 3081330742, 3009969537, 2905550212, 2850959411, 2762807018, 2691435357, 3560074640, 3505614887, 3719321342, 3648080713, 3342211916, 3287746299, 3467911202, 3396681109, 4063920168, 4143685023, 4223187782, 4286162673, 3779000052, 3858754371, 3904687514, 3967668269, 881225847, 809987520, 1023691545, 969234094, 662832811, 591600412, 771767749, 717299826, 311336399, 374308984, 453813921, 533576470, 25881363, 88864420, 134795389, 214552010, 2023205639, 2086057648, 1897238633, 1976864222, 1804852699, 1867694188, 1645340341, 1724971778, 1587496639, 1516133128, 1461550545, 1406951526, 1302016099, 1230646740, 1142491917, 1087903418, 2896545431, 2825181984, 2770861561, 2716262478, 3215044683, 3143675388, 3055782693, 3001194130, 2326604591, 2389456536, 2200899649, 2280525302, 2578013683, 2640855108, 2418763421, 2498394922, 3769900519, 3832873040, 3912640137, 3992402750, 4088425275, 4151408268, 4197601365, 4277358050, 3334271071, 3263032808, 3476998961, 3422541446, 3585640067, 3514407732, 3694837229, 3640369242, 1762451694, 1842216281, 1619975040, 1682949687, 2047383090, 2127137669, 1938468188, 2001449195, 1325665622, 1271206113, 1183200824, 1111960463, 1543535498, 1489069629, 1434599652, 1363369299, 622672798, 568075817, 748617968, 677256519, 907627842, 853037301, 1067152940, 995781531, 51762726, 131386257, 177728840, 240578815, 269590778, 349224269, 429104020, 491947555, 4046411278, 4126034873, 4172115296, 4234965207, 3794477266, 3874110821, 3953728444, 4016571915, 3609705398, 3555108353, 3735388376, 3664026991, 3290680682, 3236090077, 3449943556, 3378572211, 3174993278, 3120533705, 3032266256, 2961025959, 2923101090, 2868635157, 2813903052, 2742672763, 2604032198, 2683796849, 2461293480, 2524268063, 2284983834, 2364738477, 2175806836, 2238787779, 1569362073, 1498123566, 1409854455, 1355396672, 1317987909, 1246755826, 1192025387, 1137557660, 2072149281, 2135122070, 1912620623, 1992383480, 1753615357, 1816598090, 1627664531, 1707420964, 295390185, 358241886, 404320391, 483945776, 43990325, 106832002, 186451547, 266083308, 932423249, 861060070, 1041341759, 986742920, 613929101, 542559546, 756411363, 701822548, 3316196985, 3244833742, 3425377559, 3370778784, 3601682597, 3530312978, 3744426955, 3689838204, 3819031489, 3881883254, 3928223919, 4007849240, 4037393693, 4100235434, 4180117107, 4259748804, 2310601993, 2373574846, 2151335527, 2231098320, 2596047829, 2659030626, 2470359227, 2550115596, 2947551409, 2876312838, 2788305887, 2733848168, 3165939309, 3094707162, 3040238851, 2985771188],
        a.CAPTURE_PATTERN = 1332176723,
        a.INVALID_CAPTURE_PATTERN = 1,
        a.prototype.magic = function (e) {
          var r;
          return r |= e[0] << 24,
            r |= e[1] << 16,
            r |= e[2] << 8,
            r |= e[3]
        },
        a.prototype.createPage = function (e) {
          return this.pageExpr.pack(e)
        },
        a.prototype.parsePage = function (e) {
          var r = this.pageExpr.unpack(e);
          r.segments;
          this.magic(r.capturePattern) == a.CAPTURE_PATTERN ? (this.rawPages.push(e), r.bos = function () {
            return 2 == this.header
          },
            r.cont = function () {
              return 0 == this.header
            },
            r.eos = function () {
              return 4 == this.header
            },
            this.pages.push(r), this.frames.push(r.frames)) : this.error({
              code: a.INVALID_CAPTURE_PATTERN
            })
        },
        a.prototype.pageOut = function () {
          return this.pages[this.pageIdx],
            this.pageIdx += 1
        },
        a.prototype.pages = function () {
          return this.pages
        },
        a.prototype.demux = function () {
          if (!this.unpacked) {
            for (var e, r = 0,
              t = 0; r >= 0;) {
              var n = this.stream.indexOf("OggS", r);
              r = this.stream.indexOf("OggS", n + 4),
                e = this.stream.substring(n, -1 != r ? r : void 0),
                this.parsePage(e)
            }
            this.file && (t = 2, this.headers = this.frames.slice(0, t)),
              this.data = this.frames.slice(t);
            for (var i = t; i < this.pages.length; ++i) this.segments.push(this.pages[i].segments);
            return this.unpacked = !0,
              this.pages
          }
        },
        a.prototype.mux = function (e, r, t) {
          function n(e, r, t) {
            return EngineEvaluat.sequence++,
            {
              capturePattern: [79, 103, 103, 83],
              version: 0,
              headerType: e,
              granulePos: 0,
              serial: 406,
              sequence: EngineEvaluat.sequence,
              checksum: t || 0,
              pageSegments: 1,
              segments: [r || 0],
              frames: ""
            }
          }
          function i(e, r) {
            var t = n(r || 0);
            return t.pageSegments = e.length,
              t.segments = e,
              t
          }
          function a(e, r) {
            return function (e, r) {
              for (var t = new ArrayBuffer(e.length), n = new Uint8Array(t), i = 0, o = e.length; i < o; i++) n[i] = e.charCodeAt(i);
              return new DataView(t).setUint32(22, r, !0),
                String.fromCharCode.apply(null, new Uint8Array(t))
            }(e, o(e + r)) + r
          }
          function s(e) {
            for (var r = 0,
              t = 0; t < e.length; ++t) r += e[t];
            return r
          }
          r = r || {};
          var l = "",
            u = e[0];
          0 == EngineEvaluat.isFirst && (EngineEvaluat.isFirst = 1);
          var c = {};
          if (1 == r.firstFrame) {
            if (r.firstFrame = !1, l = a(this.createPage(n(2, c.length || u.length, c.checksum)), u), 1 == e.length) return l;
            var f = e[1];
            if (l += a(this.createPage(n(0, c.length || f.length, c.checksum)), f), 2 == e.length) return l
          }
          for (var d = e[2], _ = d[1].chunk(100), h = String.fromCharCode.apply(null, new Uint8Array(d[0].buffer)), p = 0, m = 0, w = _.length, b = 0; b < w; ++b) {
            var E = _[b];
            m += s(E),
              l += a(this.createPage(i(E, t)), h.substring(p, m)),
              p = m
          }
          return l
        },
        a.prototype.bitstream = function () {
          return this.unpacked ? this.data.join("") : null
        },
        r.a = a
    },
    1402: function (e, r, t) {
      "use strict";
      var n = t(227),
        i = t.n(n),
        o = t(1403);
      function a(e) {
        return ("string" == typeof e ? a.decode : a.encode)(e)
      }
      a.decodeFrame = function (e, r, t) {
        if (8 === r) {
          var n = new (window.Uint8Array || Array)(t.length);
          for (new o.a(e).readBuffer(n, 8, "Uint"), r = 0; r < t.length; r++) t[r] = 127.5 * (n[r] - 127.5)
        } else new o.a(e).readBuffer(t, r, "Q");
        return t
      },
        a.encodeFrame = function (e, r) {
          var t, n = i.a[(8 === r ? "fromUint" : "fromQ") + r],
            o = e.length,
            a = "";
          if (8 === r) for (t = 0; t < o; t++) a += n(127.5 * e[t] + 127.5);
          else for (t = 0; t < o; t++) a += n(e[t]);
          return a
        },
        a.decode = function (e, r) {
          var t, n, i, s, l, u, c = new o.a(e),
            f = (c.read(4), c.readUint32()),
            d = ((c = new o.a(c.read(f))).read(4), c.read(4), c.readUint32()),
            _ = new o.a(c.read(d)),
            h = (_.readUint16(), _.readUint16()),
            p = (_.readUint32(), _.readUint32()),
            m = _.readUint16(),
            w = m / h,
            b = (_.readUint16(), {}),
            E = {
              channelCount: h,
              bytesPerSample: m / h,
              sampleRate: p / m,
              chunks: b,
              data: l
            };
          function S() {
            t = c.read(4),
              n = c.readUint32(),
              s = c.read(n),
              u = b[t] = b[t] || [],
              "data" === t ? (i = ~~(n / w), l = E.data = new ("undefined" != typeof Float32Array ? Float32Array : Array)(i), a.decodeFrame(s, 8 * w, l)) : u.push(s),
              r && (c.data ? setTimeout(S, 1) : r(E))
          }
          if (r) c.data ? S() : r(E);
          else for (; c.data;) S();
          return E
        },
        a.encode = function (e, r) {
          var t, n, o, s, l = i.a.fromUint32,
            u = i.a.fromUint16,
            c = e.data,
            f = e.sampleRate,
            d = e.channelCount || 1,
            _ = e.bytesPerSample || 1,
            h = 8 * _,
            p = d * _,
            m = f * p,
            w = c.length * _,
            b = (Math.pow(2, h - 1), []),
            E = "";
          if (b.push("fmt " + l(16) + u(1) + u(d) + l(f) + l(m) + u(p) + u(h)), b.push("data" + l(w) + a.encodeFrame(c, h)), s = e.chunks) for (n in s) if (s.hasOwnProperty(n)) for (t = s[n], o = 0; o < t.length; o++) E = t[o],
            b.push(n + l(E.length) + E);
          return b = "RIFF" + l((b = b.join("")).length) + "WAVE" + b,
            r && setTimeout(function () {
              r(b)
            },
              1),
            b
        },
        r.a = a
    },
    1403: function (e, r, t) {
      "use strict";
      var n = t(227),
        i = t.n(n);
      function o(e) {
        this.data = e
      }
      var a, s, l = o.prototype = {
        read: function (e) {
          var r = this.data.substr(0, e);
          return this.skip(e),
            r
        },
        skip: function (e) {
          var r = this,
            t = r.data = r.data.substr(e);
          return r.pointer += e,
            t.length
        },
        readBuffer: function (e, r, t) {
          for (var n = "read" + t + r,
            i = e.length,
            o = 0; this.data && o < i;) e[o++] = this[n]();
          return o
        }
      };
      function u(e, r, t) {
        var n = r / 8;
        l["read" + e + r] = function (e) {
          return t(this.read(n), e)
        }
      }
      for (a in i.a) (s = /to([a-z]+)([0-9]+)/i.exec(a)) && u(s[1], s[2], i.a[a]);
      o.newType = u,
        r.a = o
    },
    1404: function (e, r, t) {
      "use strict";
      var n = t(228),
        i = t(229),
        o = t(1398),
        a = t(1399),
        s = t(436),
        l = t.n(s);
      function u(e) {
        if (this.bitstr = new l.a("speex_string:8/char,speex_version_string:20/char,speex_version_id/int,header_size/int,rate/int,mode/int,mode_bitstream_version/int,nb_channels/int,bitrate/int,frame_size/int,vbr/int,frames_per_packet/int,extra_headers/int,reserved1/int,reserved2/int", {
          bytes: !0,
          bigEndian: !1
        }), "string" == typeof e) return this.raw = e,
          this.data = this.bitstr.unpack(e),
          this.data.speex_string = String.fromCharCode.apply(null, this.data.speex_string),
          void (this.data.speex_version_string = String.fromCharCode.apply(null, this.data.speex_version_string));
        this.data = e,
          this.data.speex_string = new Uint8Array(c.util.str2ab(e.speex_string)),
          this.data.speex_version_string = new Uint8Array(c.util.str2ab(e.speex_version_string)),
          this.raw = this.bitstr.pack(this.data)
      }
      function c(e) {
        !e.mode && (e.mode = 0),
          this.params = e,
          this.frame_size = 320,
          this.ring_size = 2304,
          this.linoffset = 0,
          this.ringoffset = 0,
          this.modoffset = 0,
          this.spxbuf = [],
          this.header = null,
          this.encoder = new a.a(e),
          this.decoder = new o.a(e),
          this.init(e.firstInit)
      }
      u.prototype.toString = function () {
        return this.raw = this.bitstr.pack(this.unpacked)
      },
        c.prototype.init = function (e) {
          this.encoder.init(e),
            this.decoder.init()
        },
        c.util = i.a,
        c.onerror = function (e) {
          console.error("decoding error: ", e.message)
        },
        c.prototype.set = function (e, r) {
          this.options[e] = r
        },
        c.prototype.enable = function (e) {
          this.set(e, !0)
        },
        c.prototype.disable = function (e) {
          this.set(e, !1)
        },
        c.prototype.close = function () {
          this.encoder.close(),
            this.decoder.close()
        },
        c.prototype.encode = function (e, r) {
          if (r = !!r) return this.encoder.process(e);
          for (var t = -1,
            n = this.ringoffset; ++t < e.length; ++n) this.ring[n] = e[t];
          if (this.ringoffset += e.length, !(this.ringoffset > this.linoffset && this.ringoffset - this.linoffset < this.frame_size)) {
            for (t = -1; ++t < this.linbuf.length;) this.linbuf[t] = this.ring[this.linoffset + t];
            return this.linoffset += this.linbuf.length,
              this.spxbuf = this.encoder.process(this.linbuf),
              this.ringoffset > this.ring_size && (this.modoffset = this.ringoffset % this.ring_size, this.ringoffset = 0),
              this.linoffset > this.ring_size && (this.linoffset = 0),
              this.spxbuf
          }
        },
        i.a.merge(c, n.a),
        r.a = {
          Speex: c,
          SpeexHeader: u,
          SpeexComment: function (e) {
            if (this.bitstr = new l.a("vendor_length:4,vendor_string:vendor_length/char,user_comment_list_length:4,user_comments:_"), "string" == typeof e) return this.raw = e,
              this.data = this.bitstr.unpack(e),
              void (this.data.vendor_string = String.fromCharCode.apply(null, this.data.vendor_string));
            this.data = e,
              this.data.vendor_string = new Uint8Array(c.util.str2ab(e.vendor_string)),
              this.raw = this.bitstr.pack(this.data)
          }
        }
    },
    2: function (e, r) {
      e.exports = require("path")
    },
    227: function (e, r) {
      var t = String.fromCharCode,
        n = !0,
        i = !1;
      function o(e, r, t, n) {
        var i = Math.pow,
          a = Math.floor,
          s = o.convertFromBinary,
          l = o.convertToBinary,
          u = e / 8,
          c = i(2, e),
          f = c / 2,
          d = f - 1,
          _ = 1 / f,
          h = 1 / d;
        return n ? t ? r ?
          function (e, r) {
            return e = a(e < 0 ? e * f + c : e * d),
              l(e, u, r)
          } : function (e, r) {
            return l(a(e * d), u, r)
          } : r ?
            function (e, r) {
              return l(e < 0 ? e + c : e, u, r)
            } : function (e, r) {
              return l(e, u, r)
            } : t ? r ?
              function (e, r) {
                var t = s(e, r);
                return t > d ? (t - c) * _ : t * h
              } : function (e, r) {
                return s(e, r) * h
              } : r ?
              function (e, r) {
                var t = s(e, r);
                return t > d ? t - c : t
              } : function (e, r) {
                return s(e, r)
              }
      }
      o.convertToBinary = function (e, r, n) {
        return n ?
          function e(r, n) {
            return n ? e(r >> 8, n - 1) + t(255 - r & 255) : ""
          }(e, r) : function e(r, n) {
            return n ? t(255 & r) + e(r >> 8, n - 1) : ""
          }(e, r)
      },
        o.convertFromBinary = function (e, r) {
          var t, n = e.length,
            i = n - 1,
            o = 0,
            a = Math.pow;
          if (r) for (t = 0; t < n; t++) o += (255 - e.charCodeAt(t)) * a(256, i - t);
          else for (t = 0; t < n; t++) o += e.charCodeAt(t) * a(256, t);
          return o
        },
        o.fromQ32 = o(32, n, n, n),
        o.toQ32 = o(32, n, n, i),
        o.fromQ24 = o(24, n, n, n),
        o.toQ24 = o(24, n, n, i),
        o.fromQ16 = o(16, n, n, n),
        o.toQ16 = o(16, n, n, i),
        o.fromQ8 = o(8, n, n, n),
        o.toQ8 = o(8, n, n, i),
        o.fromInt32 = o(32, n, i, n),
        o.toInt32 = o(32, n, i, i),
        o.fromInt16 = o(16, n, i, n),
        o.toInt16 = o(16, n, i, i),
        o.fromInt8 = o(8, n, i, n),
        o.toInt8 = o(8, n, i, i),
        o.fromUint32 = o(32, i, i, n),
        o.toUint32 = o(32, i, i, i),
        o.fromUint16 = o(16, i, i, n),
        o.toUint16 = o(16, i, i, i),
        o.fromUint8 = o(8, i, i, n),
        o.toUint8 = o(8, i, i, i),
        e.exports = o
    },
    228: function (e, r, t) {
      "use strict";
      var n = t(128),
        i = {
          SPEEX_NB_MODES: 3,
          SPEEX_SET_ENH: 0,
          SPEEX_GET_ENH: 1,
          SPEEX_GET_FRAME_SIZE: 3,
          SPEEX_SET_QUALITY: 4,
          SPEEX_GET_QUALITY: 5,
          SPEEX_SET_VBR: 12,
          SPEEX_GET_VBR: 13,
          SPEEX_SET_VBR_QUALITY: 14,
          SPEEX_GET_VBR_QUALITY: 15,
          SPEEX_SET_COMPLEXITY: 16,
          SPEEX_GET_COMPLEXITY: 17,
          SPEEX_SET_SAMPLING_RATE: 24,
          SPEEX_GET_SAMPLING_RATE: 25,
          SPEEX_SET_VAD: 30,
          SPEEX_GET_VAD: 31,
          SPEEX_SET_ABR: 32,
          SPEEX_GET_ABR: 33,
          SPEEX_SET_DTX: 34,
          SPEEX_GET_DTX: 35,
          types: {
            SpeexBits: n.a.generateStructInfo([["i1*", "chars"], ["i32", "nbBits"], ["i32", "charPtr"], ["i32", "bitPtr"], ["i32", "owner"], ["i32", "overflow"], ["i32", "buf_size"], ["i32", "reserved1"], ["i8*", "reserved2"]]),
            SpeexHeader: n.a.generateStructInfo([["i32", "speex_version_id"], ["i32", "header_size"], ["i32", "rate"], ["i32", "mode"], ["i32", "mode_bitstream_version"], ["i32", "nb_channels"], ["i32", "bitrate"], ["i32", "frame_size"], ["i32", "vbr"], ["i32", "frames_per_packet"], ["i32", "extra_headers"], ["i32", "reserved1"], ["i32", "reserved2"]])
          }
        };
      r.a = i
    },
    229: function (e, r, t) {
      "use strict";
      var n = t(227),
        i = t.n(n),
        o = {
          parseInt: function (e) {
            return i.a.toUint8(e)
          },
          merge: function (e, r, t, n) {
            var i, o = n || [],
              a = void 0 === t ? 2 : t;
            for (i in r) r.hasOwnProperty(i) && o.indexOf(i) < 0 && ("object" == typeof e[i] && a ? merge(e[i], r[i], a - 1, o) : (e[i] = r[i], o.push(r[i])));
            return e
          },
          inherit: function (e, r) {
            function t() { }
            t.prototype = r.prototype,
              e.prototype = new t
          },
          str2ab: function (e) {
            for (var r = new ArrayBuffer(e.length), t = new Uint8Array(r), n = 0, i = e.length; n < i; n++) t[n] = e.charCodeAt(n);
            return r
          }
        };
      r.a = o
    },
    3: function (e, r) {
      e.exports = require("fs")
    },
    436: function (e, r, t) {
      "use strict";
      function n(e, r) {
        this.expr = e,
          this.options = r || {},
          this.types = [],
          this.cache = {},
          this.byteLength = 0,
          this.options.compile,
          this.compile()
      }
      DataView.prototype.getInt64 = function (e, r) {
        return this.getInt32(e, r) << 32 | this.getInt32(e + 4, r)
      },
        DataView.prototype.setInt64 = function (e, r, t) {
          return this.setInt32(e, r >> 32, t)
        },
        DataView.prototype.getUint64 = function (e, r) {
          return this.getUint32(e, r) << 32 | this.getUint32(e + 4, r)
        },
        DataView.prototype.setUint64 = function (e, r, t) {
          return this.setUint32(e, r >> 32, t)
        },
        n.UNPACK_OP = 0,
        n.PACK_OP = 1,
        n.SPECIFIER_SEPARATOR = "-",
        n.ATTR_SEPARATOR = ":",
        n.SPECIFIER_DELIMITER = "/",
        n.SEGMENT_DELIMITER = ",",
        n.util = {
          dvdup: function (e, r) {
            for (var t = new Uint8Array(e), n = new Uint8Array(new ArrayBuffer(r)), i = 0, o = t.length; i < o; ++i) n[i] = t[i];
            return new DataView(n.buffer)
          },
          str2dv: function (e) {
            for (var r = new ArrayBuffer(e.length), t = new Uint8Array(r), n = 0, i = e.length; n < i; n++) t[n] = e.charCodeAt(n);
            return new DataView(r)
          }
        },
        n.prototype.compile = function () {
          for (var e = this.expr.split(n.SEGMENT_DELIMITER), r = 0, t = e.length; r < t; ++r) {
            var i, o, a, s, l;
            a = (i = e[r].split(n.SPECIFIER_DELIMITER))[1] || "",
              o = i[0].split(n.ATTR_SEPARATOR),
              s = a.split(n.SPECIFIER_SEPARATOR) || [],
              l = {
                spec: o[1],
                size: parseInt("_" != o[1] ? o[1] : 0),
                value: o[0],
                unit: this.unit(a),
                ref: !1,
                sign: "Uint"
              },
              (s.indexOf("signed") >= 0 || s.indexOf("int") >= 0) && (l.sign = "Int"),
              s.indexOf("int") >= 0 && (l.size = 4, l.unit = 0),
              isNaN(l.size) && 0 == this.cache[l.spec] && (l.ref = !0),
              this.byteLength += l.size || 0,
              this.types.push(l),
              this.cache[l.value] = 0
          }
        },
        n.prototype.unit = function (e) {
          var r = e.split(n.ATTR_SEPARATOR),
            t = 2 == r.length,
            i = t ? parseInt(r[1]) : r[0];
          return t ? i : "char" == i ? 1 : "int" == i ? 4 : "double" == i ? 8 : 0
        },
        n.prototype.__op = function (e, r) {
          var t, i, o = n.util;
          r == n.UNPACK_OP ? (t = o.str2dv(e), i = {}) : (t = new DataView(new ArrayBuffer(this.byteLength)), i = e);
          for (var a = 0,
            s = this.types,
            l = !this.options.bigEndian,
            u = 0,
            c = s.length; u < c; ++u) {
            var f = s[u].size,
              d = s[u].value,
              _ = s[u].unit,
              h = s[u].ref,
              p = s[u].sign,
              m = 0,
              w = _ * f || 1,
              b = _ || f,
              E = i[d],
              S = null;
            h && (s[u].size = i[s[u].spec], w = _ * (f = s[u].size), r && (t = o.dvdup(t.buffer, t.buffer.byteLength + w))),
              f && (S = (r ? "set" : "get") + p + 8 * b);
            do {
              r ? f && t[S](a, _ ? i[d][m] : i[d], l) : (E = S ? t[S](a, l) : e.substr(a), _ ? (i[d] = i[d] || []).push(E) : i[d] = E), a += b, --w, ++m
            } while (w);
            this.cache[d] = E
          }
          return r ? String.fromCharCode.apply(null, new Uint8Array(t.buffer)) : i
        },
        n.prototype.unpack = function (e) {
          return this.__op(e, n.UNPACK_OP)
        },
        n.prototype.pack = function (e) {
          return this.__op(e, n.PACK_OP)
        },
        e.exports = n
    },
    437: function (e, r, t) {
      "use strict";
      var n = t(128);
      r.a = function (e) {
        this.mode = n.a._speex_lib_get_mode(e.mode || 0),
          this.params = e,
          this.opt_basename = "SPEEX_SET_",
          this.ctl_func = n.a._speex_encoder_ctl,
          this.options = {}
      }
    },
    622: function (e, r) {
      e.exports = ws
    },
    624: function (e, r, t) {
      "use strict";
      var n = t(1401),
        i = t(1404),
        o = t(1402);
      r.a = {
        encodeFile: function (e, r, t) {
          t = t || 0;
          var a = function (e) {
            var r = new Uint8Array(e),
              t = r.subarray(0, 44),
              n = new Uint8Array(r.length - 44);
            n.set(r.subarray(44), 0);
            var i = o.a.decode(String.fromCharCode.apply(null, t));
            return i.samples = new Int16Array(n.buffer),
              i
          }(e);
          if (r.first) {
            void 0 != r.spxcodec && r.spxcodec.close();
            var s = new i.a.Speex({
              quality: 8,
              mode: 1,
              bits_size: 70
            })
          } else s = r.spxcodec;
          var l, u, c, f, d = new n.a(null, {
            file: !1
          });
          s.bits_size = 70,
            performance.mark("encodeStart"),
            c = s.encode(a.samples, !0),
            l = new i.a.SpeexHeader({
              bitrate: -1,
              extra_headers: 0,
              frame_size: 320,
              frames_per_packet: 1,
              header_size: 80,
              mode: 1,
              mode_bitstream_version: 4,
              nb_channels: 1,
              rate: a.sampleRate,
              reserved1: 0,
              reserved2: 0,
              speex_string: "Speex   ",
              speex_version_id: 1,
              speex_version_string: "1.2rc1\0\0\0\0\0\0\0\0\0\0\0\0\0\0",
              vbr: 0
            }),
            u = "Encoded with speex.js",
            u = new i.a.SpeexComment({
              vendor_string: u,
              vendor_length: u.length
            }),
            f = d.mux([l.raw, u.raw, c], r, t),
            performance.mark("encodeEnd"),
            performance.measure("encode", "encodeStart", "encodeEnd");
          var _ = [];
          return _[0] = f,
            r.first ? _[1] = s : _[1] = r.spxcodec,
            _
        },
        readFile: function (e, r, t, n) {
          var i = e.target.files[0],
            o = new FileReader;
          o.onload = r,
            t ? o.readAsArrayBuffer(i) : o.readAsBinaryString(i)
        }
      }
    },
    625: function (e, r, t) {
      "use strict";
      function n(e, r, t) {
        var n = new Date;
        n.setDate(n.getDate() + t),
          document.cookie = e + "=" + r + ";expires=" + n
      }
      e.exports = {
        ajax: function (e) {
          (e = e || {}).type = (e.type || "GET").toUpperCase(),
            e.dataType = e.dataType || "json",
            e.async = e.async || !0,
            e.timeout = e.timeout || 1,
            e.coreType = e.coreType || "application/x-www-form-urlencoded'";
          var r, t = function (e) {
            var r = [];
            for (var t in e) r.push(encodeURIComponent(t) + "=" + encodeURIComponent(e[t]));
            return r.join("&")
          }(e.data); (r = window.XMLHttpRequest ? new XMLHttpRequest : new ActiveXObject("Microsoft.XMLHTTP")).onreadystatechange = function () {
            if (4 == r.readyState) {
              var t = r.status;
              200 == t ? "function" == typeof e.done ? e.done(r.responseText, r.responseXML) : console.log("请传递成功回调") : "function" == typeof e.fail ? e.fail(t) : console.log("请传递失败回调")
            }
          },
            "GET" === e.type ? (r.open("GET", e.url + "?" + t, e.async), r.send(null), setTimeout(function () {
              4 !== r.readyState && (r.abort(), "function" == typeof e.requestTimeout && e.requestTimeout())
            },
              e.timeout)) : "POST" === e.type ? (r.open("POST", e.url, e.async), r.setRequestHeader("Content-Type", e.coreType), r.send(e.data)) : console.error("暂不支持" + e.type + "请求")
        },
        setCookie: n,
        getCookie: function (e) {
          for (var r = document.cookie.split("; "), t = r.length - 1; t >= 0; t--) {
            var n = r[t].split("=");
            return n[0] === e ? n[1] : ""
          }
        },
        delCookie: function (e) {
          n(e, 1, -1)
        }
      }
    },
    626: function (e, r, t) {
      "use strict";
      var n = Math.min,
        i = Math.max,
        o = function (e, r, t) {
          for (var n = t.length,
            i = 0; i < n; ++i) e.setUint8(r + i, t.charCodeAt(i))
        },
        a = function (e, r) {
          this.sampleRate = e,
            this.numChannels = r,
            this.numSamples = 0,
            this.dataViews = []
        };
      a.prototype.encode = function (e) {
        try {
          for (var r = e[0].length, t = this.numChannels, o = new DataView(new ArrayBuffer(r * t * 2)), a = 0, s = 0; s < r; ++s) for (var l = 0; l < t; ++l) {
            var u = 32767 * e[l][s];
            o.setInt16(a, u < 0 ? i(u, -32768) : n(u, 32767), !0),
              a += 2
          }
          this.dataViews.push(o),
            this.numSamples += r
        } catch (e) { }
      },
        a.prototype.finish = function (e) {
          var r = this.numChannels * this.numSamples * 2,
            t = new DataView(new ArrayBuffer(44));
          o(t, 0, "RIFF"),
            t.setUint32(4, 36 + r, !0),
            o(t, 8, "WAVE"),
            o(t, 12, "fmt "),
            t.setUint32(16, 16, !0),
            t.setUint16(20, 1, !0),
            t.setUint16(22, this.numChannels, !0),
            t.setUint32(24, this.sampleRate, !0),
            t.setUint32(28, 4 * this.sampleRate, !0),
            t.setUint16(32, 2 * this.numChannels, !0),
            t.setUint16(34, 16, !0),
            o(t, 36, "data"),
            t.setUint32(40, r, !0),
            this.dataViews.unshift(t);
          var n = new Blob(this.dataViews, {
            type: "audio/wav"
          });
          return this.cleanup(),
            n
        },
        a.prototype.cancel = a.prototype.cleanup = function () {
          this.dataViews = []
        },
        e.exports = a
    },
    627: function (e, r, t) {
      "use strict";
      function n(e, r) {
        var t = (65535 & e) + (65535 & r);
        return (e >> 16) + (r >> 16) + (t >> 16) << 16 | 65535 & t
      }
      function i(e, r, t, i, o, a) {
        return n(function (e, r) {
          return e << r | e >>> 32 - r
        }(n(n(r, e), n(i, a)), o), t)
      }
      function o(e, r, t, n, o, a, s) {
        return i(r & t | ~r & n, e, r, o, a, s)
      }
      function a(e, r, t, n, o, a, s) {
        return i(r & n | t & ~n, e, r, o, a, s)
      }
      function s(e, r, t, n, o, a, s) {
        return i(r ^ t ^ n, e, r, o, a, s)
      }
      function l(e, r, t, n, o, a, s) {
        return i(t ^ (r | ~n), e, r, o, a, s)
      }
      function u(e, r) {
        var t, i, u, c, f;
        e[r >> 5] |= 128 << r % 32,
          e[14 + (r + 64 >>> 9 << 4)] = r;
        var d = 1732584193,
          _ = -271733879,
          h = -1732584194,
          p = 271733878;
        for (t = 0; t < e.length; t += 16) i = d,
          u = _,
          c = h,
          f = p,
          _ = l(_ = l(_ = l(_ = l(_ = s(_ = s(_ = s(_ = s(_ = a(_ = a(_ = a(_ = a(_ = o(_ = o(_ = o(_ = o(_, h = o(h, p = o(p, d = o(d, _, h, p, e[t], 7, -680876936), _, h, e[t + 1], 12, -389564586), d, _, e[t + 2], 17, 606105819), p, d, e[t + 3], 22, -1044525330), h = o(h, p = o(p, d = o(d, _, h, p, e[t + 4], 7, -176418897), _, h, e[t + 5], 12, 1200080426), d, _, e[t + 6], 17, -1473231341), p, d, e[t + 7], 22, -45705983), h = o(h, p = o(p, d = o(d, _, h, p, e[t + 8], 7, 1770035416), _, h, e[t + 9], 12, -1958414417), d, _, e[t + 10], 17, -42063), p, d, e[t + 11], 22, -1990404162), h = o(h, p = o(p, d = o(d, _, h, p, e[t + 12], 7, 1804603682), _, h, e[t + 13], 12, -40341101), d, _, e[t + 14], 17, -1502002290), p, d, e[t + 15], 22, 1236535329), h = a(h, p = a(p, d = a(d, _, h, p, e[t + 1], 5, -165796510), _, h, e[t + 6], 9, -1069501632), d, _, e[t + 11], 14, 643717713), p, d, e[t], 20, -373897302), h = a(h, p = a(p, d = a(d, _, h, p, e[t + 5], 5, -701558691), _, h, e[t + 10], 9, 38016083), d, _, e[t + 15], 14, -660478335), p, d, e[t + 4], 20, -405537848), h = a(h, p = a(p, d = a(d, _, h, p, e[t + 9], 5, 568446438), _, h, e[t + 14], 9, -1019803690), d, _, e[t + 3], 14, -187363961), p, d, e[t + 8], 20, 1163531501), h = a(h, p = a(p, d = a(d, _, h, p, e[t + 13], 5, -1444681467), _, h, e[t + 2], 9, -51403784), d, _, e[t + 7], 14, 1735328473), p, d, e[t + 12], 20, -1926607734), h = s(h, p = s(p, d = s(d, _, h, p, e[t + 5], 4, -378558), _, h, e[t + 8], 11, -2022574463), d, _, e[t + 11], 16, 1839030562), p, d, e[t + 14], 23, -35309556), h = s(h, p = s(p, d = s(d, _, h, p, e[t + 1], 4, -1530992060), _, h, e[t + 4], 11, 1272893353), d, _, e[t + 7], 16, -155497632), p, d, e[t + 10], 23, -1094730640), h = s(h, p = s(p, d = s(d, _, h, p, e[t + 13], 4, 681279174), _, h, e[t], 11, -358537222), d, _, e[t + 3], 16, -722521979), p, d, e[t + 6], 23, 76029189), h = s(h, p = s(p, d = s(d, _, h, p, e[t + 9], 4, -640364487), _, h, e[t + 12], 11, -421815835), d, _, e[t + 15], 16, 530742520), p, d, e[t + 2], 23, -995338651), h = l(h, p = l(p, d = l(d, _, h, p, e[t], 6, -198630844), _, h, e[t + 7], 10, 1126891415), d, _, e[t + 14], 15, -1416354905), p, d, e[t + 5], 21, -57434055), h = l(h, p = l(p, d = l(d, _, h, p, e[t + 12], 6, 1700485571), _, h, e[t + 3], 10, -1894986606), d, _, e[t + 10], 15, -1051523), p, d, e[t + 1], 21, -2054922799), h = l(h, p = l(p, d = l(d, _, h, p, e[t + 8], 6, 1873313359), _, h, e[t + 15], 10, -30611744), d, _, e[t + 6], 15, -1560198380), p, d, e[t + 13], 21, 1309151649), h = l(h, p = l(p, d = l(d, _, h, p, e[t + 4], 6, -145523070), _, h, e[t + 11], 10, -1120210379), d, _, e[t + 2], 15, 718787259), p, d, e[t + 9], 21, -343485551),
          d = n(d, i),
          _ = n(_, u),
          h = n(h, c),
          p = n(p, f);
        return [d, _, h, p]
      }
      function c(e) {
        var r, t = "",
          n = 32 * e.length;
        for (r = 0; r < n; r += 8) t += String.fromCharCode(e[r >> 5] >>> r % 32 & 255);
        return t
      }
      function f(e) {
        var r, t = [];
        for (t[(e.length >> 2) - 1] = void 0, r = 0; r < t.length; r += 1) t[r] = 0;
        var n = 8 * e.length;
        for (r = 0; r < n; r += 8) t[r >> 5] |= (255 & e.charCodeAt(r / 8)) << r % 32;
        return t
      }
      function d(e) {
        var r, t, n = "";
        for (t = 0; t < e.length; t += 1) r = e.charCodeAt(t),
          n += "0123456789abcdef".charAt(r >>> 4 & 15) + "0123456789abcdef".charAt(15 & r);
        return n
      }
      function _(e) {
        return unescape(encodeURIComponent(e))
      }
      function h(e) {
        return function (e) {
          return c(u(f(e), 8 * e.length))
        }(_(e))
      }
      function p(e, r) {
        return function (e, r) {
          var t, n, i = f(e),
            o = [],
            a = [];
          for (o[15] = a[15] = void 0, i.length > 16 && (i = u(i, 8 * e.length)), t = 0; t < 16; t += 1) o[t] = 909522486 ^ i[t],
            a[t] = 1549556828 ^ i[t];
          return n = u(o.concat(f(r)), 512 + 8 * r.length),
            c(u(a.concat(n), 640))
        }(_(e), _(r))
      }
      e.exports = function (e, r, t) {
        return r ? t ? p(r, e) : function (e, r) {
          return d(p(e, r))
        }(r, e) : t ? h(e) : function (e) {
          return d(h(e))
        }(e)
      }
    },
    628: function (e, r, t) {
      "use strict";
      var n = {
        socket: {},
        coreType: "",
        websocketTimer: null,
        connectTimeoutState: !1,
        open: function (e) {
          "WebSocket" in window ? (d.console("infor", 600, d.server + e + " websocket start connect"), n.coreType = e, n.socket = new WebSocket(d.server + e + "?connect_id=" + c.sendStartData.param.app.connect_id), n.timer(), o.clear(), n.socket.onopen = function () {
            d.console("infor", 600, d.server + e + " websocket clear websocketTimer"),
              clearTimeout(n.websocketTimer),
              d.console("infor", 600, d.server + e + " websocket already connected"),
              0 === u.links && (u.links++, d.engineFirstInitDone()),
              u.first = !0
          },
            n.onclose(), n.onerror(), n.socket.onmessage = function (e) {
              d.getEngineData(e.data),
                d.console("infor", 600, "get result" + e.data)
            }) : d.console("error", 700, "browser not support websocket")
        },
        onclose: function () {
          n.socket.onclose = function () {
            d.console("infor", 1003, d.server + n.coreType + " websocket auto closed"),
              1 != n.socket.readyState && o.clear(),
              u.first || n.reconnect()
          }
        },
        onerror: function () {
          n.socket.onerror = function () {
            d.console("infor", 1004, "websocket connect failed"),
              1 != n.socket.readyState && o.clear(),
              clearTimeout(n.websocketTimer),
              d.connectOnerror()
          }
        },
        inclose: function () {
          n.socket.close(),
            o.clear(),
            u.first = !0,
            d.console("infor", 1003, d.server + n.coreType + " websocket closed")
        },
        connect: function () {
          d.console("infor", 1001, d.server + n.coreType + " websocket send connect packet"),
            o.clear(),
            o.addItemToQueue(JSON.stringify(c.sendConnectData)),
            o.sequence = 0
        },
        start: function () {
          d.console("infor", 600, d.server + n.coreType + " websocket send start packet"),
            d.console("infor", 600, JSON.stringify(c.sendStartData.param)),
            o.addItemToQueue(JSON.stringify(c.sendStartData)),
            o.sequence = 1
        },
        feed: function (e) {
          d.console("infor", 600, d.server + n.coreType + " websocket send feed packet"),
            o.addItemToQueue(e),
            o.sequence = 2
        },
        stop: function (e) {
          var r = new Uint8Array;
          d.console("infor", 600, d.server + n.coreType + " websocket send stop packet"),
            o.addItemToQueue(r),
            o.sequence = 3
        },
        timer: function () {
          d.console("infor", 600, d.server + n.coreType + " websocket coreTimeout is " + d.coreTimeout),
            clearTimeout(n.websocketTimer),
            n.websocketTimer = setTimeout(function () {
              d.console("infor", 1005, d.server + n.coreType + " websocket connect timeout"),
                n.inclose(),
                n.connectTimeoutState = !0,
                d.engineConnectTimeOut(),
                o.clear()
            },
              d.coreTimeout)
        },
        reconnect: function () {
          d.console("infor", 600, d.server + n.coreType + " websocket start reconnect"),
            c.sendStartData.param.app.connect_id = d.createUuid(),
            n.open(n.coreType)
        }
      },
        i = {
          send: function (e, r) {
            1 == n.socket.readyState ? (- 1 == o.sequence && n.connect(), 0 != o.sequence && 3 != o.sequence || this.sendHeader(r), n.feed(e)) : d.console("infor", 1003, "websocket is not open")
          },
          sendHeader: function (e) {
            c.sendStartData.param.request = e,
              e.sampleRate > 0 && (c.sendStartData.param.audio.sampleRate = e.sampleRate),
              n.start(),
              u.first = !1
          }
        },
        o = {
          list: [],
          sequence: -1,
          addItemToQueue: function (e) {
            this.list.push(e),
              this.sendData()
          },
          sendData: function () {
            if (this.list.length > 0) if (1 == n.socket.readyState) for (; this.list.length > 0;) n.socket.send(this.list.shift());
            else d.console("infor", 1011, "socket readyState is " + n.socket.readyState),
              setTimeout(function () {
                this.sendData()
              },
                100);
            else d.console("infor", 1011, "queue list is empty")
          },
          clear: function () {
            (this.list.length > 0 || -1 != this.sequence) && (d.console("infor", 1011, "clear queue"), this.list = []),
              this.sequence = -1
          }
        },
        a = {
          send: function (e, r) {
            c.sendStartData.param.request = r,
              1 == n.socket.readyState ? r.coreType !== n.coreType ? this.coreTypeChange(e, r.coreType) : this.coreTypeNotChange(e, r.coreType) : this.connect(e, r.coreType)
          },
          connect: function (e, r) {
            n.coreType = r,
              d.console("infor", 1e3, d.server + r + " websocket again connect"),
              n.open(r),
              n.socket.onopen = function () {
                a.evaluation(e)
              }
          },
          coreTypeNotChange: function (e) {
            d.console("infor", 600, d.server + n.coreType + " coreType not change"),
              a.evaluation(e)
          },
          coreTypeChange: function (e, r) {
            d.console("infor", 600, "coreType: " + n.coreType + " change " + r),
              n.inclose(),
              this.connect(e, r)
          },
          evaluation: function (e) {
            d.console("infor", 1001, d.server + n.coreType + " websocket star send connect packet"),
              n.socket.send(JSON.stringify(c.sendConnectData)),
              n.start(),
              n.feed(e),
              l()
          },
          restoreOnopen: function () {
            n.socket.onopen = function () {
              d.console("infor", 1001, d.server + coreType + " websocket connect success and send connect packet"),
                n.socket.send(JSON.stringify(c.sendConnectData))
            }
          }
        };
      function s(e, r, t) {
        (t = void 0 !== t && t) ? a.send(e, r) : i.send(e, r)
      }
      function l() {
        n.stop(),
          u.first = !0,
          u.websocketSendStop = !0
      }
      var u = {
        first: !0,
        links: 0,
        browserInfo: function (e) {
          let r = {
            terminal: "Unkown",
            browser: "Unkown",
            version: "Unkown",
            os_version: "Unkown"
          },
            t = {},
            n = {
              "windows nt 10": "Windows 10",
              "windows nt 6.3": "Windows 8.1",
              "windows nt 6.2": "Windows 8",
              "windows nt 6.1": "Windows 7",
              "windows nt 6.0": "Windows Vista",
              "windows nt 5.2": "Windows Server 2003XP x64",
              "windows nt 5.1": "Windows XP",
              "windows xp": "Windows XP",
              "windows nt 5.0": "Windows 2000",
              "windows me": "Windows ME",
              win98: "Windows 98",
              win95: "Windows 95",
              win16: "Windows 3.11",
              "macintosh|mac os x": "Mac OS X",
              mac_powerpc: "Mac OS 9",
              linux: "Linux",
              ubuntu: "Ubuntu",
              phone: "iPhone",
              pod: "iPod",
              pad: "iPad",
              android: "Android",
              blackberry: "BlackBerry",
              webos: "Mobile",
              freebsd: "FreeBSD",
              sunos: "Solaris"
            };
          for (let t in n) if (new RegExp(t).test(e.toLowerCase())) {
            r.terminal = n[t];
            break
          } (t = e.match(/MSIE\s(\d+)\..*/)) ? (r.browser = "ie", r.version = t[1]) : (t = e.match(/FireFox\/(\d+)\..*/)) ? (r.browser = "firefox", r.version = t[1]) : (t = e.match(/Opera[\s|\/](\d+)\..*/)) ? (r.browser = "opera", r.version = t[1]) : (t = e.match(/Chrome\/(\d+)\..*/)) ? (r.browser = "chrome", r.version = t[1]) : (t = e.match(/Safari\/(\d+)\..*$/)) ? (r.browser = "safari", r.version = t[1]) : (t = e.match(/rv:(\d+)\..*/)) && (r.browser = "ie", r.version = t[1]);
          return r
        }(window.navigator.userAgent)
      },
        c = {
          sendConnectData: {
            cmd: "connect",
            param: {
              sdk: {
                version: 20190929,
                sdk_version: "v2.0.7.2",
                arch: "x86_64",
                source: 6,
                protocol: 1,
                os: u.browserInfo.terminal,
                product_version: u.browserInfo.version,
                product: u.browserInfo.browser
              },
              app: {}
            }
          },
          sendStartData: {
            cmd: "start",
            param: {
              app: {
                userId: "any",
                clientId: "",
                connect_id: ""
              },
              audio: {
                sampleRate: 16e3,
                channel: 1,
                sampleBytes: 2,
                audioType: "ogg"
              }
            }
          }
        };
      var f = {
        isNeedAddZero: function (e) {
          return e >= 10 ? "" + e : "0" + e
        },
        getNowFormatDate: function () {
          var e = new Date;
          return e.getFullYear() + "-" + this.isNeedAddZero(e.getMonth() + 1) + "-" + this.isNeedAddZero(e.getDate()) + " " + this.isNeedAddZero(e.getHours()) + ":" + this.isNeedAddZero(e.getMinutes()) + ":" + this.isNeedAddZero(e.getSeconds()) + ":" + this.isNeedAddZero(e.getMilliseconds())
        },
        output: function (e, r, t, n) {
          // console.log(c)
          var i = this.getNowFormatDate() + " [" + e + "] (" + r + ") " + t;
          switch (n && "infor" === e /* && console.log(i) */, e) {
            case "error":
              console.error(i);
              break;
            case "warn":
              console.warn(i)
          }
          i = null
        }
      },
        d = {
          server: "",
          logIsOpen: !0,
          console: function (e, r, t) {
            f.output(e, r, t, this.logIsOpen),
              "function" == typeof d.logAccept && d.logAccept(JSON.stringify({
                type: e,
                code: r,
                msg: t
              }))
          },
          init: function (e) {
            if (function (e) {
              return "[object Object]" === Object.prototype.toString.call(e)
            }(e)) for (var r in e) "connect_id" === r && "userId" === r && "clientId" === r || (c.sendConnectData.param.app[r] = e[r]),
              c.sendStartData.param.app[r] = e[r]
          },
          connect: function (e) {
            n.open(e)
          },
          send: function (e, r, t, n) {
            s(e, r, t)
          },
          state: function () {
            return n.socket.readyState
          },
          isWebsocketTimeout: function () {
            return n.connectTimeoutState
          },
          inclose: function () {
            n.inclose()
          },
          stopSend: function () {
            l()
          },
          reconnect: function () {
            n.reconnect()
          }
        };
      e.exports = d
    }
  });